Bonjour,
J'ai créé une base très simple, l'idée est la suivante :
J'ai plusieurs fichiers de 6 000 000 de lignes chacun, chaque fichier est constitué de coordonnées X, Y et d'une valeur associée.
Chaque couple X, Y est donc associé à plusieurs fichier, et cette relation possède une valeur :
J'ai saisi pour l'instant 2 fichiers, soit 13 000 000 d'entités pour la table files_has_coordinates.
Je veux rechercher pour un fichier donné la valeur associée à certaines coordonnées.
J'ai exécuté un VACUUM et ANALYZE avant de lancer mes recherches.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT spot_values FROM files JOIN files_has_coordinates ON (idfiles = files_idfiles) JOIN coordinates ON (idcoordinates = coordinates_idcoordinates) WHERE (coord_x = 150 AND coord_y = 145) AND file_name = 'results_1.csv';
Les requêtes sont assez lentes (entre 3 et 10 secondes pour chaque couple) et j'ai un nombre très important de requêtes à effectuer
Petite question: la contrainte UNIQUE sur (coord_x, coord_y) crée-t'elle bien un index sur le couple ?
Info config: mon PC est récent (4 mois) sous Ubuntu Feisty et PostgreSQL 8.2.
Verriez-vous un problème dans la construction des tables et / ou des contraintes par rapport au besoin, auriez-vous des conseils sur l'optimisation des requêtes ?
En vous remerciant,
C. Tobini
Partager