#1 Mon 29 November 2021 16:09
- Hippo
- Participant actif
- Date d'inscription: 18 Jan 2015
- Messages: 57
Bonne pratique pour une jointure entre 2 tables
Ma question va sûrement de soi pour beaucoup mais j'aimerais un éclaircissement en terme de bonnes pratiques sur ma problématique svp.
J'ai 2 tables de données. Dans l'une j'ai l'ensemble des communes d'un département avec leur code INSEE. Dans l'autre, j'ai des parcelles appartenant à plusieurs communes, et le code insee des communes de rattachement.
Dans QGIS, afin de joindre mes 2 tables, je fais une simple jointure sur le code insee.
Pour autant, dans PostGreSQL/PostGIS, puis-je opérer de la même façon avec une relation de 1 à N ou dois je préférablement créer une nouvelle colonne dans chaque table avec un id unique pour l'indexation, sur lequel je devrai faire ma jointure (et non sur le code insee donc) ?
Hors ligne
#2 Mon 29 November 2021 17:15
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Bonne pratique pour une jointure entre 2 tables
Bonjour,
Vous pouvez tout a fait lier les deux tables sur le code insee, sans rajouter de colonne.
En passant par des valeurs entieres (et non texte comme le code insee), les manipulations iront un poil plus vite, mais pas sur du tout que ce soit significatif.
Nicolas
Hors ligne
#3 Mon 29 November 2021 17:27
Re: Bonne pratique pour une jointure entre 2 tables
Bonjour,
Sauf en Corse le code INSEE peut la plupart du temps être défini comme un entier même si l'affichage peut éventuellement perturber pour les départements 01 à 09
Dernière modification par jmarsac (Mon 29 November 2021 17:29)
Jean-Marie
Azimut
Hors ligne
#4 Tue 30 November 2021 11:59
- Hippo
- Participant actif
- Date d'inscription: 18 Jan 2015
- Messages: 57
Re: Bonne pratique pour une jointure entre 2 tables
Super, merci pour vos réponses.
Et bonne remarque concernant la Corse !
Hors ligne
#5 Tue 30 November 2021 13:10
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1159
Re: Bonne pratique pour une jointure entre 2 tables
Sauf en Corse le code INSEE peut la plupart du temps être défini comme un entier même si l'affichage peut éventuellement perturber pour les départements 01 à 09
Mais comme à la création de ces codes insees, il n'existait qu'un seul département Corse , il n'y a pas de collisions de code insee entre les deux (maintenant de nouveau réunis) départements, et vous pouvez tout de même les considérer comme des entiers.
Un petit test rapide de sur une jointure simple sans index de deux tables contenant chacunes 100000 nombres aléatoires similaires aux codes insee ne donne pas vraiment de différence entre l'utilisation d'entier par rapport à du texte (type text, char ou varchar) sous pg 11.
Bien entendu, cela doit dépendre de la requête et de son contexte d'utilisation.
Hors ligne