Junior — Middle
Mi okozhatja, hogy a PostgreSQL ne használjon indexet egy adott mező keresésekor?
sobes.tech MI
Válasz az MI-től
A PostgreSQL több okból is előfordulhat, hogy nem használ indexet egy adott mező keresésekor:
- Alacsony szelektivitású lekérdezés: ha a keresési feltétel nagy százalékát adja vissza a soroknak, a tervező a szekvenciális átvizsgálást választhatja, mivel az hatékonyabb.
- Nem kompatibilis adattípusok vagy műveletek az indexszel: például olyan függvények vagy műveletek használata, amelyek nem támogatják az indexet (például
LIKE '%pattern'), vagy adattípus-inkompatibilitás. - Hiányzó vagy elavult statisztikák: ha az adatbázis statisztikái nincsenek frissítve (
ANALYZE), a tervező rossz döntést hozhat. - Kifejezések használata, amelyek nem fedettek az indexben: például számított mező szerinti keresés megfelelő funkcionális index nélkül.
- Konfigurációs paraméterek: például túl magas
random_page_costérték befolyásolhatja a terv választását.
Példa: ha van indexed a name mezőn, de a lekérdezés WHERE LOWER(name) = 'abc'-t használ, és az index nem funkcionális a LOWER(name)-en, akkor az index nem lesz használatban.