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 21/02/2023 14:19:52

Geo-x
Membre

Indexation des clés étrangères

Bonjour à tous,

Je pensais jusqu'à aujourd'hui, que les clés étrangères déclarées dans une table postgres étaient automatiquement indexées, puis, je suis tombé sur une option dans PG Admin : Index FK Auto. Par conséquent, qu'en est-il ?
Si je suis bien votre (complète) documentation (https://public.dalibo.com/exports/forma … ndout.html) la clé est indexée si, dans la table à laquelle elle fait référence, cette même clé correspond à une clé primaire.
En l’occurrence, j'ai un cas qui ne semble pas être le même et je ne sais pas comment je pourrais optimiser mon indexation. Dans mon cas ma clé étrangère est un champ à part dans l'autre table :
f7p2.png

A noter : la table 1 contient une contrainte d'unicité sur le champ ID_Table2

Comment puis-je optimiser cela ?

Merci

Geo-x

Dernière modification par Geo-x (21/02/2023 14:32:08)

Hors ligne

#2 21/02/2023 15:26:05

rjuju
Administrateur

Re : Indexation des clés étrangères

Bonjour,


Postgres ne créera jamais d'index sur les clés étrangères tout seul, comme tout autre index à l'exception des index créés pour garantir une contrainte type clé primaire ou contrainte d'unicité.  Donc effectivement, c'est à vous de créer un index sur la FK, si cela est nécessaire.


Concernant votre exemple, je crains de ne pas comprendre.  Avez-vous un exemple plus clair sous forme SQL (DDL et DML pour insérer des données et une requête type qui pourrait être problématique).

Hors ligne

#3 22/02/2023 12:32:15

Geo-x
Membre

Re : Indexation des clés étrangères

Bonjour Julien et merci de votre réponse.

J'ai tenté de créer un jeu de données quasiment iso en volumétrie et structure > https://1fichier.com/?bx1vzax1twrsioxsl5fi

Et voici la requête adaptée > https://1fichier.com/?jboe86m6mm69paaszlbv

En parallèle de ça j'ai analysé le résultat via explain DALIBO : https://explain.dalibo.com/plan/13a7h14fb882be93 mais le chemin ne correspond pas au chemin parcouru par la requête avec de "vrais" données. Voici à quoi ressemble le parcours de la requête sur la vraie donnée :
yi4j.png

Merci de votre aide.

Hors ligne

Pied de page des forums