EXPLAIN visar planen som optimeraren valde — hur den kommer att komma åt varje tabell — utan att köra frågan. Du läser den för att bekräfta att index används och att få rader granskas.
EXPLAIN visar planen som optimeraren valde — hur den kommer att komma åt varje tabell — utan att köra frågan. Du läser den för att bekräfta att index används och att få rader granskas.
const / eq_ref / ref (indexuppslagningar, bra) → range → index (full indexskanning) → ALL (full table scan, den röda flaggan).NULL = inget).Using index (covering, utmärkt), Using filesort / Using temporary (sortering/gruppering i minne eller på disk — ofta optimerbart).EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- scans everything, sorts
-- +------+------+------+---------+--------+----------------+
-- Add an index that covers the filter AND the sort order:
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 | <- seeks 30 rows, no filesort
Indexet förvandlade en ALL-skanning av 900k rader till en ref-sökning av 30, och eftersom created_at är den andra kolumnen kommer raderna ut försorterade — filesort försvinner.
Använd EXPLAIN ANALYZE (MySQL 8) för att även se faktisk tidtagning och radantal, vilket fångar fall där uppskattningen är fel.
EXPLAIN är hur du ersätter gissningar med bevis. Att upptäcka type: ALL, ett enormt rows eller Using filesort säger dig exakt var ett index saknas — den snabbaste vägen från "sidan är långsam" till en riktad fix.
Ett bibliotek med IT-intervjufrågor och detaljerade svar — från Junior till Senior.
Donera