Ich habe eine Tabelle t mit einer Spalte c, die ein int ist und einen btree-Index hat.
Warum verwendet die folgende Abfrage diesen Index nicht?
%Vor%Das Ergebnis ist:
%Vor%Mein Verständnis von Indizes ist begrenzt, aber ich dachte, solche Abfragen waren der Zweck von Indizes.
Die Abfrage kann sicherlich einen Index verwenden. Der Grund, dass es in Ihrem speziellen Fall nicht hängt, hängt von der besonderen Größe und Verteilung der Daten ab. Sie können SET enable_seqscan TO off
zur Untersuchung verwenden.
Diese Abfrage kann mit einer Optimierung durchgeführt werden, die als loose index scan bezeichnet wird. PostgreSQL implementiert diese Optimierung jedoch noch nicht, so dass stattdessen eine Tabellensuche verwendet wird.
Von den wichtigsten Datenbanken habe ich, soweit ich weiß, nur lose implementiert. MySQL Index-Scan (vielleicht auch Oracle?). PostgreSQL hat diese Funktion nicht implementiert .
Tags und Links database postgresql relational-database database-performance