Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
Guillaume.
Hors ligne
#10 15/12/2009 15:17:23
- gilou974
- Membre
Re : probleme sur execution de requete
Alors c bon
Hors ligne
Pages : 1