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 :

optimiser BDD pr requete


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 28
    Points : 23
    Points
    23
    Par défaut optimiser BDD pr requete
    bonjour,

    j'ai trois tables :
    1 contenant 13304 enregistrement, une seconde avec 53591enregistrements et une derniere avec 9000 enregistrements ...
    Le problème est que lorsque je fais une requete ceci prend un certains tps (1 mns a deux mns), ce qui occasionne un ralentissement...
    j'aimerais savoir s'il est possible d'optimiser au plus la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select distinct author.codeservice,article.pmid
                            from articleauthor,author,article
    			where author.idaut=articleauthor.idaut
                            and article.pmid=articleauthor.pmid
    			and author.codeservice not in ($sqlListeService)
    			and author.codeservice <> ''
    			and article.pmid in
                             ( select distinct aa.pmid
                               from author as au,articleauthor as aa,article as art
    			   where au.idaut=aa.idaut
      			   and au.codeservice in ($sqlListeService)
    			   and art.Annee>=$deb
    			   and art.Annee<=$fin
                              )
    la voici ...

    j'ai fais un vacuum et analyse mais rien ni fais...
    Quand je fais le produit cartesien de ses trois table, je suis a 393 milliard !!!
    Peux ton faire quelque chose pour améliorer ce temps?


  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ( select distinct aa.pmid 
                               from author as au,articleauthor as aa,article as art 
                where au.idaut=aa.idaut 
                  and au.codeservice in ($sqlListeService) 
                and art.Annee>=$deb 
                and art.Annee<=$fin 
    )
    Il n'y a pas de lien entre la table article et les deux autres tables ; il fait donc un produit cartésien entre article et la jointure author/articleauthor.

    D'autre part, je pense que tu peux simplifier ta requête pour ne pas avoir de requête imbriquée.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    une chose importante lorsque l'on veut optimisé une requête est d'utilisé l'explain plan, cela permet entre autre de vérifier que les index sont bien utilisé.

    KrysKool
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    merci pour vos réponses,

    GrandFather, en effet, j'avais oublier une jointure dans la sous requete, j'ai corriger et depuis c'est beaucoup plus rapide

    kryskool, merci du conseil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation d'une requete "TOP 5"
    Par gregb34 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/05/2006, 17h17
  2. Réponses: 5
    Dernier message: 14/04/2006, 18h58
  3. Optimisation d'une requete récurrente
    Par winzou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/01/2006, 22h07
  4. Optimisation d'une requete specifique
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/12/2005, 14h14
  5. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58

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