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 : Sélectionner tout - Visualiser dans une fenêtre à part
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