PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Clé primaire et index : Optimisation de requête Select

Technique - optimisation | Clé primaire et index : Optimisation de requête Select

Par Julio le 14/02/2006 - 10:51

Bonjour,

Dans un ensemble de procédures PL/pgSQL, on fait réalise un certain nombre d’insertions dans une table avec des select sur une autre table que j’appele T_lien.

Cette table T_lien a :
- une clé primaire sur deux champs : mere et fille.
- Un index sur le champ mere.

Dans mon code PL/pgSQL à optimiser, j’ai des select avec des clauses Where d’égalité sur le champ mere et d’autres avec le champ fille.

Malgré la présence de la clé primaire ET de l’index sur le champ mere, les select d’égalité sur le champ mere prennent relativement beaucoup de temps.

J’ai fait un test qui a permis d’obtenir de meilleures performances :

- suppression de la clé primaire (mere, fille),
- création d’un index sur le champ fille.

Les select avec clause Where d’égalité sur les champs mere ou fille sont optimisés.

Cependant, cela était pour le test. Je ne peux pas supprimer la clé primaire définitivement.

Puis-je apporter une modification à la clé primaire pour qu’elle ne pénalise pas les temps comme c’est le cas lorsqu’elle est là ?

Merci

Récapitulatif :

Situation actuelle :
- Table T_lien,
- Clé primaire sur (mere, fille),
- Index sur mere
* Dans ces conditions,
les select * From T_Lien Where mere=’xxx’
et
les select * From T_lien Where fille=’yyy’
prennent beaucoup de temps.

Situation testée mais pas définitive :
- Table T_lien,
- Clé primaire sur (mere, fille) ---> SUPPRIMéE,
- Index sur mere,
- Index sur fille ---> CRéE,
* Dans ces conditions,
les select * From T_Lien Where mere=’xxx’
et
les select * From T_lien Where fille=’yyy’
sont optimisés.

Merci encore de votre aide.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Je précise que la version de

Julio/ = 14 Février, 2006 - 11:29

Je précise que la version de PostgreSQL utilisé est la 7.4.


Avant de tester la suppressio

SAS/ = 15 Février, 2006 - 14:04

Avant de tester la suppression d'une clé primaire, qui représente une réalité au sens BDD relationnel, avez-vous essayer d'actualiser les données de l'optimiseur et du planificateur ?

Un petit coup de vacuum full analyze devrait aider, je pense.

Stéphane Schildknecht


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.