Ich habe eine große Tabelle (> 50 m Zeilen), die einige Daten mit einer ID und Zeitstempel hat:Beschleunigung PostgreSQL-Abfrage, wo Daten zwischen zwei Terminen sind
id, timestamp, data1, ..., dataN
... mit einem mehrspaltigen Index auf (id, timestamp)
.
Ich brauche die Tabelle abzufragen alle Zeilen mit einer bestimmten ID zu wählen, in dem der Zeitstempel zwischen zwei Daten, die ich zur Zeit mit tue:
SELECT * FROM mytable WHERE id = x AND timestamp BETWEEN y AND z
Das zur Zeit dauert mehr als 2 Minuten auf einem High-End Maschine (2x 3Ghz Dual-Core-Xeons mit HT, 16 GB RAM, 2x 1 TB Laufwerke in RAID 0) und ich würde es wirklich gerne beschleunigen.
Ich habe this tip gefunden, die die Verwendung eines räumlichen Index empfiehlt, aber das Beispiel gibt es für IP-Adressen. Allerdings ist die Geschwindigkeitssteigerung (436s bis 3s) beeindruckend.
Wie kann ich dies mit Zeitstempeln verwenden?
* Definieren High-End-Maschine? Wirklich ... 50 Millionen Reihen sind heute nach heutigen Maßstäben ein großer Tisch. * Also, die Tabelle hat ID - wo ist der Zeitstempel? * Welche Indizes? Fehlender Index plus beschissene Hardware (High End + normale Discs) könnte zu diesen Ergebnissen führen. – TomTom
Dual 3GHz Xeon Dual-Cores mit HT, 16GB RAM etc. Die Tabelle hat (ID, Timestamp, Daten) mit einem mehrspaltigen Index (ID, Timestamp). – Roger
NICHT High End mit allen Mitteln .... vor allem, wie Sie nichts über die ..... Discs sagen, die der kritische Teil für jeden Datenbankserver sind. VIEL MEHR als die CPU oder der RAM. Was ist dein CD-Layout? – TomTom