optimisation requête [jointure]
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:
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...