EXPLAIN ukazuje plán, který optimalizátor zvolil — jak přistoupí ke každé tabulce — aniž by dotaz spustil. Čtete jej, abyste potvrdili, že se používají indexy a že se prohledává málo řádků.
EXPLAIN ukazuje plán, který optimalizátor zvolil — jak přistoupí ke každé tabulce — aniž by dotaz spustil. Čtete jej, abyste potvrdili, že se používají indexy a že se prohledává málo řádků.
const / eq_ref / ref (vyhledávání v indexu, dobré) → range → index (úplné skenování indexu) → ALL (úplné skenování tabulky, červená vlajka).NULL = žádný).Using index (pokrývací, výborné), Using filesort / Using temporary (řazení/seskupování v paměti nebo na disku — často optimalizovatelné).EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- skenuje vše, řadí
-- +------+------+------+---------+--------+----------------+
-- Přidejte index, který pokryje filtr I pořadí řazení:
CREATE INDEX idx_cust_created ON orders (customer_id, created_at);
EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- | type | key | rows | Extra |
-- | ref | idx_cust_created | 30 | Using where | <- vyhledá 30 řádků, bez filesort
Index proměnil skenování ALL 900 tisíc řádků ve vyhledání ref 30 řádků, a protože created_at je druhý sloupec, řádky přicházejí předem seřazené — filesort zmizí.
Použijte EXPLAIN ANALYZE (MySQL 8), abyste viděli také skutečné časování a počty řádků, což odhalí případy, kdy je odhad chybný.
EXPLAIN je způsob, jak nahradit hádání důkazy. Odhalení type: ALL, obřího rows nebo Using filesort vám přesně řekne, kde chybí index — nejrychlejší cesta od "stránka je pomalá" k cílené opravě.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět