Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 15/03/2017 11:15:35
- Tanite
- Membre
Index pour une cle étrangère
Bonjour
Je reviens vers vous pour savoir si il est nécessaire de créer des index sur les cles étrangères ?
Sous Oracle il est recommande de créer les index, même chose pour PostgreSQL ?
Y a t'il des impacte de perf ?
Merci d'avance
Tanite
Hors ligne
#2 15/03/2017 12:22:30
- gleu
- Administrateur
Re : Index pour une cle étrangère
Oui, il est recommandé de créer des index pour faciliter/accélérer les recherches sur les clés étrangères. L'impact est très positif pour ces recherches, et est négatif pour les écritures, comme tout autre index.
Guillaume.
Hors ligne
#3 15/03/2017 20:11:38
- Tanite
- Membre
Re : Index pour une cle étrangère
OK, merci pour votre aide !
Hors ligne
#4 20/03/2017 17:09:45
- fbamiere@yahoo.com
- Membre
Re : Index pour une cle étrangère
Bonjour,
Lorsque l'on supprime un enregistrement de la table père, PostgreSQL cherche à savoir s'il existe des enregistrements fils :
select x from table_fille
where id_fk_pere = 'enregistrement père en cours de suppression'
S'il n'y a pas d'index sur id_fk_pere (la colonne de la foreign key), on part pour un sequential scan sur la table fille (mais on ne le voit pas, car cela doit être un ordre généré).
S'il y a un index, on l'utilise.
A moins d'envisager de ne jamais purger d'enregistrements, il me semble que l'on ne peut pas se passer d'index sur les FK.
Test ici avec une table père de 1.509.619 et une table fille de 2.125.573 enregistrements.
-- avec INDEX DE FK :
idev00=> delete from zzjournacl_fred where zzjoidfsys=5003866907;
DELETE 1
Temps : 1,738 ms
-- sans INDEX DE FK :
idev00=> delete from zzjournacl_fred where zzjoidfsys=5003866908;
DELETE 1
Temps : 236,130 ms
Hors ligne
Pages : 1