Maison > base de données > tutoriel mysql > LATERAL JOIN et sous-requêtes dans PostgreSQL : quand devez-vous utiliser laquelle ?

LATERAL JOIN et sous-requêtes dans PostgreSQL : quand devez-vous utiliser laquelle ?

Mary-Kate Olsen
Libérer: 2025-01-24 05:37:09
original
197 Les gens l'ont consulté

LATERAL JOIN vs. Subqueries in PostgreSQL: When Should You Use Which?

LATERAL JOIN vs sous-requête dans PostgreSQL : quand utiliser laquelle ?

Contexte

L'émergence de LATERAL JOIN dans PostgreSQL fournit une solution potentielle aux problèmes complexes de vidage de données impliquant des sous-requêtes inefficaces. Cet article vise à clarifier la situation en explorant les cas d'utilisation et les différences de LATERAL JOIN et des sous-requêtes.

Qu'est-ce que LA JOINTURE LATÉRALE ?

LATERAL JOIN, introduit dans PostgreSQL 9.3, permet à des sous-requêtes ou des fonctions de table d'apparaître dans une clause FROM, leur permettant de référencer des colonnes à partir d'entrées FROM précédentes. Contrairement aux sous-requêtes ordinaires qui ne sont exécutées qu'une seule fois, LATERAL JOIN évalue l'expression du côté droit pour chaque ligne de la jointure gauche, comme une sous-requête corrélée.

versus sous-requête corrélée

LATERAL JOIN est similaire à une sous-requête corrélée, mais présente quelques différences clés. Il convient de noter que LATERAL JOIN peut renvoyer plusieurs colonnes et lignes, tandis que les sous-requêtes corrélées sont généralement limitées à une seule valeur. De plus, dans la syntaxe LATERAL JOIN, l'équivalent d'une sous-requête corrélée est LEFT JOIN LATERAL ... ON true.

Au-delà de la fonctionnalité de sous-requête

LATERAL JOIN fournit des fonctions difficiles à réaliser avec des sous-requêtes. Par exemple, ils permettent l'utilisation de fonctions de table, le référencement croisé de plusieurs entrées FROM et le renvoi de plusieurs colonnes à partir de plusieurs lignes. Ils peuvent également profiter de fonctions qui renvoient des collections pour des opérations plus efficaces.

SELECT renvoie la fonction de collecte dans la liste

Les fonctions de retour de collection comme unnest() peuvent être utilisées directement dans les listes SELECT. Bien qu'auparavant problématique, cela a été optimisé depuis PostgreSQL 10, offrant une alternative à LATERAL JOIN pour renvoyer plusieurs lignes ou colonnes. Cependant, il est important de noter que dans ce cas, les lignes manquantes dans le résultat éliminent la ligne entière, contrairement à LATERAL JOIN.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal