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 averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 28
    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 confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    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 chevronné

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    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

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 28
    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