J'ai une grande table (> rows de 50m) qui a des données avec un ID et l'horodatage:L'accélération de requête PostgreSQL où les données sont entre deux dates
id, timestamp, data1, ..., dataN
... avec un index à plusieurs colonnes sur (id, timestamp)
.
J'ai besoin d'interroger la table pour sélectionner toutes les lignes avec un certain ID où l'horodatage est entre deux dates, que je suis actuellement en train de faire en utilisant:
SELECT * FROM mytable WHERE id = x AND timestamp BETWEEN y AND z
Cela prend actuellement plus de 2 minutes à une extrémité haute machine (2x Xeons dual-core 3Ghz avec HT, 16 Go de RAM, 2x lecteurs 1 To en RAID 0) et je voudrais vraiment accélérer.
J'ai trouvé this tip qui recommande d'utiliser un index spatial, mais l'exemple qu'il donne est pour les adresses IP. Cependant, l'augmentation de la vitesse (436s à 3s) est impressionnante. Comment puis-je l'utiliser avec les horodatages?
* Définir une machine haut de gamme? Vraiment ... 50 millions de lignes est maintenant une grande table selon les normes d'aujourd'hui. * Donc, la table a ID - où est l'horodatage? * Quels indices? Un index manquant et un matériel merdique (haut de gamme + disques normaux) pourraient conduire à ces résultats. – TomTom
Double Xeon Dual-cœurs 3GHz avec HT, 16 Go de RAM, etc. La table a (id, timestamp, data) avec un index multi-colonnes sur (id, timestamp). – Roger
PAS haut de gamme par tous les moyens .... en particulier que vous ne dites rien sur les disques ....., qui sont la partie critique pour tout serveur de base de données. BEAUCOUP mor ethan le CPU, ou la RAM. Quelle est la disposition de votre disque? – TomTom