Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

EXPLAIN - plan zapytania

Skąd wiesz, czy Biblioteka korzysta z katalogu, czy mozolnie przegląda regał po regale? Pytasz o plan zapytania za pomocą polecenia EXPLAIN.

Jak to działa

Dopisz

EXPLAIN
przed dowolnym zapytaniem
SELECT
:

1EXPLAIN SELECT * FROM ksiazki WHERE tytul = 'Iliada';

MySQL nie wykona zapytania, lecz pokaże, jak zamierza je wykonać - to jak podejrzenie planu bibliotekarza, zanim ruszy w głąb regałów.

Co czytamy w planie

EXPLAIN zwraca tabelę z kilkoma kolumnami. Na początek najważniejsze są dwie:

  • type - sposób dostępu.
    ALL
    oznacza pełne skanowanie tabeli (źle!), a
    ref
    lub
    const
    - użycie indeksu (dobrze!).
  • key - który indeks został użyty. Jeśli widzisz tu
    NULL
    , żaden katalog nie pomógł i baza czyta wszystko.

Przykład rozumowania

Uruchom EXPLAIN bez indeksu na

tytul
- zobaczysz
type: ALL
,
key: NULL
. Baza przegląda każdy zwój.

Załóż indeks

idx_tytul
, uruchom EXPLAIN ponownie - teraz
type: ref
, a w
key
pojawi się
idx_tytul
. Biblioteka zajrzała do katalogu zamiast wędrować po regałach.

Po co to wszystko

EXPLAIN to Twoje narzędzie diagnostyczne. Gdy zapytanie działa wolno, najpierw sprawdź jego plan. Jeśli widzisz pełne skanowanie tam, gdzie filtrujesz po kolumnie - to znak, że przyda się indeks. Dobry skryba zawsze sprawdza plan, zanim oskarży Bibliotekę o powolność!

Przejdź do CodeWorlds