Sobes.tech
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.