PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 15/12/2009 12:35:23

gilou974
Membre

probleme sur execution de requete

Bonjour à tous,

je ne connaît vraiment pas grand chose en BDD aussi à force de lire je glane mes infos au fil des pages. Ainsi je pensais que automatiquement sur une clé étrangère il y avait un index de crée mais il semble que non.

Quelqu'un pourrait-il me confirmer ainsi que le bien fondé de créer dans ce cas un index systématiquement sur les clé qui servent par la suite dans les jointures.

Merci par avance.

Gilles.

Hors ligne

#2 15/12/2009 12:42:19

Marc Cousin
Membre

Re : probleme sur execution de requete

Systématiquement non : un index a toujours un coût à maintenir.

Malgré tout, c'est le plus souvent une bonne idée. Si on ne le fait pas, la recherche que le moteur devra faire pour vérifier qu'il ne casse pas de contrainte d'intégrité suite à la suppression d'un enregistrement sur la table ayant la FK déclenchera un parcours complet sur la table ayant la FK.


Marc.

Hors ligne

#3 15/12/2009 13:08:30

gilou974
Membre

Re : probleme sur execution de requete

Alors ça va dans le sens de ce que j'avais compris . Merci beaucoup pour la confirmation.

Hors ligne

#4 15/12/2009 13:30:57

gilou974
Membre

Re : probleme sur execution de requete

Une autre précision (ne rigolez pas s'il vous plait) :
Si dans une table j'ai une clé étrangère id_trs qui lie ma table t1 à la table tiers qui a pour clé primaire id_trs me faut-il mettre un index sur la colone id_trs de t1 ou pas alors ????

Merci d'avance

Hors ligne

#5 15/12/2009 14:24:56

gleu
Administrateur

Re : probleme sur execution de requete

Un index ne sera pas du tout utile pour les petites tables, ce qui est souvent le cas de tables dictionnaires, qui sont souvent utilisées avec des clés étrangères. Donc, le fait que PostgreSQL n'ajoute pas d'index automatiquement est compréhensible. De toute façon, PostgreSQL n'ajoute un index de façon automatique que pour s'assurer d'une contrainte (UNIQUE, et clé primaire).

Si dans une table j'ai une clé étrangère id_trs qui lie ma table t1 à la table tiers qui a pour clé primaire id_trs me faut-il mettre un index sur la colone id_trs de t1 ou pas alors ????

La colonne id_trs est déjà une clé primaire, donc elle a déjà un index. Par contre, il est possible d'ajouter un index à la colonne de la table t1 (celle qui a la clé étrangère).


Guillaume.

Hors ligne

#6 15/12/2009 14:44:41

gilou974
Membre

Re : probleme sur execution de requete

Merci pour la réponse donc pour moi vu que j'ai environ 20000 lignes dans la t1 il peut être bon de mettre un index si j'ai bien compris.?

Hors ligne

#7 15/12/2009 14:54:46

Marc Cousin
Membre

Re : probleme sur execution de requete

Pour 20 000, c'est préférable oui.


Marc.

Hors ligne

#8 15/12/2009 15:02:07

gilou974
Membre

Re : probleme sur execution de requete

Merci beaucoup à tous les deux alors je crois que je vais être obligé de créer pas mal d'index.
Après je me mettrais à la configuration de mon serveur .....

Question : que doit on faire pour cloturer un post??

Hors ligne

#9 15/12/2009 15:05:56

gleu
Administrateur

Re : probleme sur execution de requete

Rien smile


Guillaume.

Hors ligne

#10 15/12/2009 15:17:23

gilou974
Membre

Re : probleme sur execution de requete

Alors c bon

Hors ligne

Pied de page des forums