Junior — Middle
Was kann dazu führen, dass PostgreSQL bei der Suche in einem bestimmten Feld keinen Index verwendet?
sobes.tech KI
Antwort von AI
PostgreSQL verwendet möglicherweise keinen Index bei der Suche nach einem bestimmten Feld aus mehreren Gründen:
- Niedrige Selektivität der Abfrage: Wenn die Suchbedingung einen großen Prozentsatz der Zeilen zurückgibt, kann der Planner eine sequentielle Suche wählen, da diese effizienter ist.
- Daten- oder Operationstypen, die mit dem Index nicht kompatibel sind: Zum Beispiel die Verwendung von Funktionen oder Operationen, die keinen Index unterstützen (wie
LIKE '%pattern') oder inkompatible Datentypen. - Fehlende Statistiken oder veraltete Statistiken: Wenn die Statistiken der Tabelle nicht aktualisiert sind (
ANALYZE), kann der Planner eine falsche Entscheidung treffen. - Verwendung von Ausdrücken, die vom Index nicht abgedeckt werden: Zum Beispiel die Suche in einem berechneten Feld ohne entsprechenden funktionalen Index.
- Konfigurationsparameter: Zum Beispiel kann ein zu hoher Wert von
random_page_costdie Planwahl beeinflussen.
Beispiel: Wenn Sie einen Index auf das Feld name haben, aber die Abfrage WHERE LOWER(name) = 'abc' verwendet und der Index nicht funktional auf LOWER(name) ist, wird der Index nicht verwendet.