EXPLAIN prikazuje plan koji je optimizator odabrao — kako će pristupiti svakoj tablici — bez pokretanja upita. Čitate ga da potvrdite da se indeksi koriste i da se ispituje malo redaka.
EXPLAIN prikazuje plan koji je optimizator odabrao — kako će pristupiti svakoj tablici — bez pokretanja upita. Čitate ga da potvrdite da se indeksi koriste i da se ispituje malo redaka.
const / eq_ref / ref (pretrage po indeksu, dobro) → range → index (potpuno skeniranje indeksa) → ALL (potpuno skeniranje tablice, crveni alarm).NULL = nijedan).Using index (pokrivajući, sjajno), Using filesort / Using temporary (sortiranje/grupiranje u memoriji ili na disku — često se može optimizirati).EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- skenira sve, sortira
-- +------+------+------+---------+--------+----------------+
-- Dodaj indeks koji pokriva filter I redoslijed sortiranja:
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 | <- traži 30 redaka, bez filesort
Indeks je pretvorio ALL skeniranje 900 tisuća redaka u ref traženje od 30, a budući da je created_at drugi stupac, retci izlaze već sortirani — filesort nestaje.
Koristite EXPLAIN ANALYZE (MySQL 8) da vidite i stvarno vrijeme i broj redaka, hvatajući slučajeve gdje je procjena pogrešna.
EXPLAIN je način na koji zamjenjujete nagađanje dokazima. Uočavanje type: ALL, golemog rows ili Using filesort govori vam točno gdje nedostaje indeks — najbrži put od "stranica je spora" do ciljanog popravka.
Knjižnica IT pitanja za razgovore za posao s detaljnim odgovorima — od Juniora do Seniora.
Doniraj