EXPLAIN shfaq planin që zgjodhi optimizer-i — si do të aksesojë çdo tabelë — pa e ekzekutuar query-n. E lexon për të konfirmuar që indekset përdoren dhe pak rreshta shqyrtohen.
EXPLAIN shfaq planin që zgjodhi optimizer-i — si do të aksesojë çdo tabelë — pa e ekzekutuar query-n. E lexon për të konfirmuar që indekset përdoren dhe pak rreshta shqyrtohen.
const / eq_ref / ref (kërkime indeksi, mirë) → range → index (full index scan) → ALL (full table scan, flamuri i kuq).NULL = asnjë).Using index (covering, shkëlqyeshëm), Using filesort / Using temporary (renditje/grupim në memorie ose në disk — shpesh i optimizueshëm).EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- skanon gjithçka, rendit
-- +------+------+------+---------+--------+----------------+
-- Shto një indeks që mbulon filtrin DHE rendin e renditjes:
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 | <- kërkon 30 rreshta, pa filesort
Indeksi e ktheu një skanim ALL prej 900k rreshtash në një seek ref prej 30, dhe sepse created_at është kolona e dytë, rreshtat dalin të para-renditur — filesort zhduket.
Përdor EXPLAIN ANALYZE (MySQL 8) për të parë gjithashtu timing-un dhe numrin e rreshtave aktual, duke kapur rastet ku vlerësimi është i gabuar.
EXPLAIN është mënyra si e zëvendëson hamendjen me prova. Të kapësh type: ALL, një rows të stërmadh, ose Using filesort të tregon saktësisht ku mungon një indeks — rruga më e shpejtë nga "faqja është e ngadaltë" te një rregullim i synuar.
Një bibliotekë pyetjesh intervistash IT me përgjigje të detajuara — nga Junior te Senior.
Dhuro