|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
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/ |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com