EXPLAIN menunjukkan pelan yang dipilih oleh pengoptimum (optimizer) — bagaimana ia akan mengakses setiap jadual — tanpa menjalankan pertanyaan. Anda membacanya untuk mengesahkan indeks digunakan dan sedikit baris diperiksa.
EXPLAIN menunjukkan pelan yang dipilih oleh pengoptimum (optimizer) — bagaimana ia akan mengakses setiap jadual — tanpa menjalankan pertanyaan. Anda membacanya untuk mengesahkan indeks digunakan dan sedikit baris diperiksa.
const / eq_ref / ref (carian indeks, baik) → range → index (imbasan indeks penuh) → ALL (imbasan jadual penuh, bendera merah).NULL = tiada).Using index (covering, hebat), Using filesort / Using temporary (pengisihan/pengumpulan dalam memori atau pada cakera — selalunya boleh dioptimumkan).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
Indeks itu menukar imbasan ALL sebanyak 900k baris menjadi carian ref sebanyak 30, dan kerana created_at ialah lajur kedua, baris keluar telah pra-isih — filesort hilang.
Gunakan EXPLAIN ANALYZE (MySQL 8) untuk turut melihat masa dan kiraan baris sebenar, menangkap kes di mana anggaran itu salah.
EXPLAIN ialah cara anda menggantikan tekaan dengan bukti. Mengesan type: ALL, rows yang besar, atau Using filesort memberitahu anda dengan tepat di mana indeks hilang — laluan terpantas dari "halaman ini perlahan" ke pembaikan yang bersasar.
Pustaka soalan temu duga IT dengan jawapan terperinci — daripada Junior hingga Senior.
Derma