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...