Spalten, die zum Filtern verwendet werden oder beitreten (oder in geringerem Maße sortieren ) für die Indexierung interessant sind. Gerade ausgewählte Spalten sind kaum relevant! Für die folgende Abfrage wird nur auf ein indiziert und e kann nützlich sein:
SELECT a,b,c,d
FROM tbl_a
WHERE a = $some_value
AND e < $other_value;
Hier, f und möglicherweise c sind auch Kandidaten:
SELECT a,b,c,d
FROM tbl_a
JOIN tbl_b USING (f)
WHERE a = $some_value
AND e < $other_value
ORDER BY c;
Testen Sie nach dem Erstellen von Indizes mit EXPLAIN ANALYZE
. Vergleichen Sie auch die Ausführungszeiten mit und ohne Indizes. Das Löschen und Neuerstellen von Indizes ist schnell und einfach. Es gibt auch Parameter zum Experimentieren
mit EXPLAIN ANALYZE
. Der Unterschied kann verblüffend oder gar nicht vorhanden sein.
Da Ihre Tabellen schreibgeschützt sind, ist die Indexpflege günstig. Es ist lediglich eine Frage des Speicherplatzes.
Wenn Sie wirklich wissen wollen, was Sie tun, lesen Sie zunächst die Dokumentation .
Wenn Sie nicht wissen, welche Abfragen Sie erwarten können ...
-
Versuchen Sie, genügend Abfragen zu protokollieren, um typische Anwendungsfälle zu finden. Protokollanfragen mit dem Parameter
log_statement = all
dafür. Oder protokollieren Sie einfach langsame Abfragen mitlog_min_duration_statement
. -
Erstellen Sie Indizes das könnte nützlich sein und überprüfen Sie nach einiger Zeit die Statistiken, um zu sehen, was tatsächlich verwendet wird. PostgreSQL hat eine ganze Infrastruktur für Überwachungsstatistiken . Eine praktische Möglichkeit, Statistiken (und viele andere Aufgaben) zu studieren, ist pgAdmin wo Sie Ihre Tabelle / Funktion / Index auswählen und alle Daten auf der Registerkarte "Statistiken" im Objektbrowser (Hauptfenster) abrufen können.
-
Gehen Sie wie oben beschrieben vor, um zu sehen, ob verwendete Indizes die Dinge tatsächlich beschleunigen.
-
Wenn der Abfrageplaner sich dafür entscheidet, einen oder mehrere Ihrer Indizes zu verwenden, aber ohne oder mit negativen Auswirkungen, dann stimmt wahrscheinlich etwas mit Ihrer Einrichtung nicht und Sie müssen die Grundlagen der Leistungsoptimierung:Vakuum, Analyse, Kostenparameter, Speichernutzung, ...