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.

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';
J'ai exécuté un VACUUM et ANALYZE avant de lancer mes recherches.

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