bonjour,
J'ai un problème d'optimisation de mes requêtes.
Mes tables font jusqu'à un million d'enregistrements donc cela devient capital.
J'utilise (depuis peu) postgresql+postgis.
voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT table1.col1,table2.col1, table3.col1,AsSVG( table2.the_geom,1,1) as geom FROM table2 JOIN table3 ON table2.col1=table3.col2, table1 WHERE table2.the_geom && '$box'::box3d AND intersects (table2.the_geom,table1.the_geom) AND table1.col1='ma variable'
les explications :
- j'effectue une jointure de la table 3 avec la table 2
- je sélectionne suivant 2 clauses géographiques( sur les table 1 et2) + une clause attributaire (sur la table 1)
- je récupère un champ de la table 3
Cette requête fonctionne mais elle est trop lente.
J'imagine que c'est une hérésie d'effectuer la jointure sur l'ensemble de la table et qu'il faudrait réaliser les sélections puis effectuer ensuite la jointure.
(Il ne restera que qq milliers d'enregistrements.)
Mais là, je ne sais pas faire: il faut peut être créer une table temporaire ?
Si quelqu'un a une idée pour organiser cela autrement...
Partager