Qu'est-ce que la jointure croisée en SQL ? Comprendre les bases
Une requête jointure croisée renvoie le produit cartésien des lignes des tables de la jointure. Il s'agit du résultat de la combinaison de chaque ligne d'une table avec chaque ligne de la seconde table.
À quoi sert la jonction transversale ?
Vous utiliserez une jointure croisée pour visualiser toutes les combinaisons possibles des lignes d'un tableau avec les données de toutes les lignes d'un second tableau. Imaginez que vous souhaitiez consulter une liste de tous les modèles de SUV Tesla, dans toutes les couleurs. Pour prendre votre décision, vous devez être en mesure d'imaginer toutes les combinaisons pour lesquelles une liste pourrait être utile. Étant donné que le nombre de modèles de SUV en tant que couleurs est faible, l'ensemble des résultats n'est pas trop important. En règle générale, vous avez déjà une préférence pour la couleur ou le modèle, vous utiliseriez donc une opération de jointure plus courante qui spécifie une condition de jointure, ce qui réduirait l'ensemble de résultats.
Quelle est la différence entre l'union et la jonction ?
La jointure croisée renvoie toutes les combinaisons de lignes de deux tableaux dans deux colonnes présentant toutes les combinaisons côte à côte. L'union renvoie le même nombre de lignes dans une seule colonne et élimine les doublons.
Colonne 1. Colonne 2
MODÈLE X noir
MODEL Y noir
MODEL X blanc
MODÈLE Y blanc
Le résultat d'une UNION ressemblera à ceci :
Colonne 1
MODÈLE X
MODÈLE Y
Noir
Noir
Quelle est la différence entre la jointure croisée et la jointure interne ?
Une jointure interne fait correspondre tous les enregistrements entre les tables, mais ne renvoie que les valeurs correspondantes. Il s'agit de l'intersection de deux tables. La jointure croisée affiche toutes les lignes des deux tables.
Jointure croisée dans la syntaxe SQL
Il existe deux variantes de la syntaxe SQL de jointure croisée, l'une avec et l'autre sans virgule. Vous trouverez ci-dessous des exemples des deux.
La syntaxe courante est la suivante SELECT * FROM [Table1] CROSS JOIN [Table2] ; La version à virgule de la même instruction est la suivante : SELECT * FROM [Table1], [Table2] ;
Il n'est pas nécessaire d'utiliser une condition de jointure car toutes les lignes sont renvoyées.
Exemple
Dans cet exemple, nous utiliserons deux tableaux, l'un contenant les modèles de SUV Tesla, comme ci-dessous :
TABLE : Tesla-SUV-Modèles
Colonnes : Modèles
Valeurs :
MODÈLE X
MODÈLE Y
Le deuxième tableau contient les couleurs des voitures comme indiqué ci-dessous :
TABLE : Couleurs Tesla
Colonnes : Couleurs
Valeurs :
Noir
Blanc
Voici un exemple d'instruction SQL pour une jointure croisée :
SELECT * FROM Tesla-SUV-Models CROSS JOIN Tesla-Colors ;
Les résultats seront les suivants :
Modèles Couleurs
MODÈLE X noir
MODÈLE Y noir
MODÈLE X blanc
MODÈLE Y blanc
Comme vous pouvez le constater, la requête renvoie toutes les combinaisons possibles des colonnes des deux tables.
Comment utiliser les jointures croisées
La jointure croisée est considérée comme une instruction très coûteuse en termes d'utilisation des données, car elle renvoie le produit de la table jointe. Si le premier tableau contient 100 lignes et le second 1000 lignes, la requête jointure croisée qui en résulte renverra 100 x 1000 lignes, soit 100 000 lignes.
Le document du serveur SQL indique que "cette opération est potentiellement coûteuse et dangereuse car elle peut entraîner une explosion des données. Il est préférable de l'utiliser dans des scénarios où une jointure normale ne peut pas être utilisée et où des prédicats très sélectifs sont utilisés dans la clause WHERE pour limiter le nombre de lignes produites".
A more format definition of the operation can be described as follows; The Cartesian Product is a multiplication operation in set theory that generates all ordered pairs of the given sets. If A is a set and elements are {a,b} and B is a set with elements {1,2,3}. The Cartesian Product of these two A and B is denoted A x B, and the result will be as follows:
AxB ={(a,1), (a,2), (a,3), (b,1), (b,2), (b,3)}
De nombreux optimiseurs de requête basés sur les coûts et outils bi signaleront la requête comme étant coûteuse à exécuter, renvoyant une erreur juste au début de l'ensemble de résultats sous la forme d'un aperçu accompagné d'un avertissement. Si les données ne changent pas souvent, les tables sont suffisamment grandes pour que l'administrateur de bases de données puisse créer une vue matérialisée des données, qui est automatiquement rafraîchie lorsque les données changent.
Visitez le site web d'Actian pour en savoir plus sur notre gamme de produits et de services de données.