Middle
Van egy SELECT lekérdezésünk a date oszlopon, amelyen B-Tree index van. A lekérdezés lassan fut, és a tervben látható, hogy az index nem alkalmazódott. Miért?
sobes.tech MI
Válasz az MI-től
Ha a date oszlopra vonatkozó lekérdezésben nem használunk B-Tree indexet, akkor a lehetséges okok:
- Az oszlop adattípusa és a lekérdezés feltételében szereplő adattípus nem egyezik, ami megakadályozza az index használatát.
- A feltételben függvényt vagy kifejezést használunk a
dateoszlopon (példáulDATE(date)vagyCAST(date AS ...)), ami megakadályozza az index használatát. - A lekérdezés olyan operátort tartalmaz, amely nem támogatja az index használatát, például
LIKE '%...%'. - Az adatbázis statisztikái elavultak, és az optimalizáló úgy döntött, hogy nem használja az indexet.
- Az index nem teljesen fed le a feltételt, vagy nem megfelelő típusú indexet használunk ehhez a lekérdezéshez.
A megoldáshoz:
- Győződjön meg arról, hogy a feltétel közvetlenül használja az oszlopot függvény nélkül.
- Ellenőrizze az adattípusokat.
- Frissítse az adatbázis statisztikáit.
- Tekintse meg a lekérdezés végrehajtási tervét (
EXPLAIN) diagnosztizáláshoz.