Jointures
Une jointure est le processus qui consiste à combiner les données de deux tables ou plus en fonction d'un domaine d'informations commun. Les lignes d'une table sont appariées avec les lignes d'une autre table lorsque les informations des lignes correspondantes correspondent en fonction du critère de jointure (le prédicat de jointure).
| TABLE1 | TABLE2 | |||
|---|---|---|---|---|
| PROJ | ID_PROJ | ID_PROJ | Nom | |
| A | 1 | 1 | Sam | |
| B | 2 | 3 | Joe | |
| C | 3 | 4 | Mary | |
| D | 4 | 1 | JACQUES | |
| 2 | Mike | |||
select proj, x.proj_id, name
from table1 x, table2 y
where x.proj_id = y.proj_idDans ce cas, le prédicat de jointure approprié est: where x.proj_id = y.proj_id.| PROJ | ID_PROJ | Nom |
|---|---|---|
| A | 1 | Sam |
| A | 1 | JACQUES |
| B | 2 | Mike |
| C | 3 | Joe |
| D | 4 | Mary |
- Jointure en boucle imbriquée
- Jointure par fusion
- Jointure par hachage
Lorsque deux tables sont jointes, une table est sélectionnée comme table externe et l'autre table est considérée comme la table interne de la jointure. La table externe est accessible en premier et n'est analysée qu'une seule fois. Le fait que la table interne soit analysée plusieurs fois dépend du type de jointure et des index disponibles. Même si une requête joint plus de deux tables, l'optimiseur ne joint que deux tables à la fois. Si nécessaire, des tables temporaires sont créées pour contenir les résultats intermédiaires.
Vous pouvez fournir des opérateurs de jointure explicites, tels que INNER ou LEFT OUTER JOIN, pour déterminer comment les tables sont utilisées dans la jointure. Toutefois, avant de modifier une requête de cette manière, vous devez permettre à l'optimiseur de déterminer comment joindre les tables, puis d'analyser les performances de la requête pour décider d'ajouter ou non des opérateurs de jointure.