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 28/04/2008, 14h14   #1
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Par défaut INDEX et optimisation

bonjour,
J'ai 2 tables : table1 et table2. chacune a 40 000 lignes. il y a 4 champs sur chacune des 2 tables.
table1
id_tab1, nom_tab1, date_tab1, desc_tab1
table2
id_tab2, detail_tab2, encoredudetail_tab2, id_tab1
N'étant pas le concepteur des 2 tables, je ne peux qu'ajouter des index (c'est déjà pas mal !!). Il n'y a pas de clé primaire, ni de clé étrangère.
La raison est que les données arrive en brut dans les 2 tables et que les doublons nous interressent.
Si je fais un
select * FROM table1, table2 WHERE table1.id_tab1 = table2.id_tab1
Ca prend beaucoup de temps.
En faisant un explain, on voit bien qu'il y a des reqscan sur les table2.
J'ai créé donc 2 index : un sur table1.id_tab1 et l'autre sur table2.id_tab1.
Je fais un vacuum, et je relance.... Pareil !! Il fait encore des reqscan.
D'où vient le problème ??? Est il possible d'empêcher les reqscan
A+
__________________
Mohammed MEHIRA
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2008, 14h25   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
As-tu fait un vacuum ou un vacuum analyze ?
Les indexes ont un coût, ils ne sont pas forcément utilisés si l'optimiseur Postgresql estime que l'accès full aux tables est plus rapide
Généralement s'il faut retourner au moins 25-30% des lignes de la table, l'accès full est moins coûteux
Quel est le plan d'exécution exact de ta requête ?
Combien de lignes dans chacune des 2 tables seront prise en compte pour ta requête ?
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2008, 15h42   #3
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Les requêtes indiquées ci dessus ne mentionnaient pas qu'il s'agissait de vue.

Des ANALYSE ont été fait. Il s'agit des distincts. En fait, (et c'est normal), il ne faut pas utiliser de distinct dans les vues mais uniquement lors des appels de vue.



Perf ok,

A+
__________________
Mohammed MEHIRA
budtucker 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 19h55.


 
 
 
 
Partenaires

Hébergement Web