Maison >base de données >tutoriel mysql >Application croisée ou jointure interne : quand l'application croisée offre-t-elle une efficacité supérieure pour les grands ensembles de données ?
Application croisée ou jointure interne : optimisation des performances pour les grands ensembles de données
L'application croisée s'avère particulièrement utile lorsqu'il s'agit de relations de tables complexes ou d'opérations difficiles à réaliser avec des jointures internes. Il génère des lignes du tableau de droite pour chaque ligne du tableau de gauche.
Bien que les applications croisées et les jointures internes puissent donner des résultats similaires, les applications croisées démontrent souvent une efficacité supérieure, en particulier lors du traitement d'ensembles de données volumineux et de l'utilisation du partitionnement ou de la pagination.
Un avantage clé de l'application croisée est sa capacité à fonctionner sans fonction définie par l'utilisateur (UDF) comme le tableau de droite, offrant ainsi une flexibilité dans diverses situations.
Pour mettre en évidence la disparité des performances, examinons un scénario avec une table "maître" contenant 20 millions d'enregistrements. Une requête de jointure interne récupérant les trois dernières lignes de chaque enregistrement dans une table « t » plus petite prend environ 30 secondes :
<code class="language-sql">WITH q AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS rn FROM master ), t AS ( SELECT 1 AS id UNION ALL SELECT 2 ) SELECT * FROM t JOIN q ON q.rn <= t.id</code>
Cependant, une requête d'application croisée équivalente se termine presque instantanément :
<code class="language-sql">WITH t AS ( SELECT 1 AS id UNION ALL SELECT 2 ) SELECT * FROM t CROSS APPLY ( SELECT TOP (t.id) m.* FROM master m ORDER BY id ) q</code>
Cette différence de performances spectaculaire souligne les avantages en termes d'efficacité de l'application croisée lors de la gestion de manipulations de données complexes au sein de grands ensembles de données.
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!