Jeden z czytelników zapytał się, jak wygląda sprawa z wydajnością ograniczeń wprowadzanych w kluczach obcych. Zgodnie z dokumentacją, InnoDB umożliwia zdefiniowania dla klucza obcego ograniczeń typu ON UPDATE CASDADE czy też ON DELETE CASCADE. Są to mechanizmy bardzo wygodne dla projektanta bazy danych, gdyż dzięki nim baza do pewnego stopnia sama z siebie pilnuje integralności danych. W przypadku dwóch tabel połączonych takim kluczem obcym, skasowanie lub modyfikacja rekordu w pierwszej skutkować będzie odpowiednią operacją na rekordzie w drugiej tabeli. Odciążamy w ten sposób aplikację, programiści nie muszą samodzielnie dbać o integralność danych. Czy jest jednak jakiś dodatkowy koszt wprowadzenia takiego ułatwienia? Do tej pory to zagadnienie nie leżało w kręgu moich zainteresowań, ale przecież można to prosto sprawdzić. Poniżej zaprezentuję to, w jaki sposób. Uogólniając, ten sam sposób postępowania można wykorzystać do sprawdzenia różnicy w wydajności dowolnej, odpowiadającej sobie pary zapytań.

czytaj dalej…