IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Exécution de requête longue


Sujet :

PostgreSQL

  1. #1
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Par défaut 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 : 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

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    1) votre premier GROUP BY ne sert à rien ! Pourquoi l'avez vous mis ?
    2) inutile d'aller cherche toutes les colonnes des le départ. Cela ralentis inutilement...
    3) votre seconde requête fait un produit cartésien ! Est-ce normal ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    1) votre premier GROUP BY ne sert à rien ! Pourquoi l'avez vous mis ?
    2) inutile d'aller cherche toutes les colonnes des le départ. Cela ralentis inutilement...
    3) votre seconde requête fait un produit cartésien ! Est-ce normal ?
    +1

Discussions similaires

  1. Construction requête => longue exécution
    Par aurelie83 dans le forum SQL
    Réponses: 6
    Dernier message: 22/10/2008, 12h02
  2. Exécuter une requête SQL très longue
    Par coraziari_l dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/01/2008, 17h07
  3. [STRUTS/HIBERNATE] Problème d'exécution de requête
    Par mc_chicken dans le forum Hibernate
    Réponses: 5
    Dernier message: 21/10/2005, 09h27
  4. Comment exécuter une requête rapidement
    Par kardevlop dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/10/2005, 13h45
  5. Réponses: 2
    Dernier message: 17/10/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo