Exécution de requête longue
bonjour,
J'exécute une requête qui est un peu longue à l'exécution, je voulais avoir un avis pour peut être l'optimiser. J'utilise au passable la cartouche spacial postgis.
La description de mes tables est la suivante :
- j'ai une table correspondant à 35 communes
- une table comportant un réseau de fibre optique (300 objets linéaires)
- une table comportant un réseau de fourreau (1500 objets linéaires)
Le but étant de calculer la distance de linéaire de FO pour chaque commune par requête spatiale. Je dois au préalable savoir dans quelles communes se trouvent les fourreaux, puis j'utilise ces communes pour calculer la longueur de FO.
Je fais donc la requête imbriquée suivante :
Code:
1 2 3 4 5 6 7 8 9 10
| WITH select_commune AS (
SELECT cad_commune.insee, cad_commune.commune, cad_commune.the_geom AS geom
FROM fo_support
JOIN cad_commune ON st_within(fo_support.the_geom, cad_commune.the_geom)
GROUP BY cad_commune.insee, cad_commune.commune, cad_commune.the_geom
)
SELECT select_commune.commune AS legend, sum(st_length(st_intersection(fo_cable.the_geom, select_commune.geom)) / 1000::double precision) AS data
FROM select_commune, fo_cable
GROUP BY select_commune.commune
ORDER BY select_commune.commune; |
Cette requête met bien une minute à se faire , je trouve ça un peu long étant donné le peu d'objet dans les tables.
Y a-t-il un moyen d'optimiser cette requête ?
Merci