Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2005, 15h00   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 28
Points : 12
Points : 12
Envoyer un message via MSN à xopos
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 :
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?

xopos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2005, 15h44   #2
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

Code :
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
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2005, 18h42   #3
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
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
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2005, 10h06   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 28
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 28
Points : 12
Points : 12
Envoyer un message via MSN à xopos
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
xopos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h58.


 
 
 
 
Partenaires

Hébergement Web