Ich habe eine große Postgres-Tabelle (150 GB +), die eine große Korrelationsmatrix zwischen zwei Variablen Val1 und Val2 speichert. Zum Beispiel:Abfragen einer großen Postgres-Korrelationstabelle
val1 | val2 | distance
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0 | 1 | 10
0 | 2 | 21
0 | 3 | 13
1 | 2 | 65
1 | 3 | 43
2 | 3 | 56
Das Paar (val1, val2) ist der zusammengesetzte Primärschlüssel für die Tabelle. Ich finde, dass, wenn ich die Abfrage unten ausführe, die Abfrage in unter 35ms ausgeführt wird.
SELECT *
FROM sliding_window_distances
WHERE (val1 = 10000)
Aber wenn ich mit val2 zu suchen, ist es nicht heraus ausführen und Zeiten.
SELECT *
FROM sliding_window_distances
WHERE (val2 = 10000)
Idealerweise möchte ich die Abfrage unten laufen, so dass ich alle Datensätze für den spezifischen Wert (10000 in meinem Beispiel)
SELECT *
FROM sliding_window_distances
WHERE (val1 = 10000)
OR (val2 = 10000)
Ich bin nicht sicher, wie die Abfrage zu beschleunigen .
Fügen Sie eine zusätzliche UNIQUE-Einschränkung auf (val2, val1). (Dies wird einen Index erstellen) – wildplasser