Sobes.tech
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 date oszlopon (például DATE(date) vagy CAST(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.