EXPLAIN näyttää optimoijan valitseman suunnitelman — miten se käyttää kutakin taulua — suorittamatta kyselyä. Luet sitä varmistaaksesi, että indeksejä käytetään ja että harvoja rivejä tutkitaan.
EXPLAIN näyttää optimoijan valitseman suunnitelman — miten se käyttää kutakin taulua — suorittamatta kyselyä. Luet sitä varmistaaksesi, että indeksejä käytetään ja että harvoja rivejä tutkitaan.
const / eq_ref / ref (indeksihaut, hyvä) → range → index (täysi indeksiskannaus) → ALL (täysi taulun skannaus, punainen lippu).NULL = ei mitään).Using index (peittävä, mahtavaa), Using filesort / Using temporary (lajittelu/ryhmittely muistissa tai levyllä — usein optimoitavissa).EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- skannaa kaiken, lajittelee
-- +------+------+------+---------+--------+----------------+
-- Lisää indeksi, joka kattaa suodattimen JA lajittelujärjestyksen:
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 | <- hakee 30 riviä, ei filesort
Indeksi muutti 900k rivin ALL-skannauksen 30 rivin ref-hauksi, ja koska created_at on toinen sarake, rivit tulevat ulos valmiiksi lajiteltuina — filesort katoaa.
Käytä EXPLAIN ANALYZE:a (MySQL 8) nähdäksesi myös todelliset ajastukset ja rivimäärät, mikä nappaa tapaukset, joissa arvio on väärä.
EXPLAIN on tapa, jolla korvaat arvailun todisteilla. type: ALL:n, valtavan rows:n tai Using filesort:n havaitseminen kertoo tarkalleen, mistä indeksi puuttuu — nopein polku "sivu on hidas":sta kohdennettuun korjaukseen.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita