Sélection d'une plage de lignes dans SQL Server : gestion des limitations du nombre de lignes
Une exigence courante dans SQL Server consiste à sélectionner une plage spécifique de lignes d'une table. Ceci peut être réalisé grâce à ces méthodes, chacune avec ses propres limites et considérations de performances.
Nombre de lignes limité dans sys.all_columns
Une technique consiste à utiliser ROW_NUMBER() et CTE pour générer une liste de lignes dans une plage spécifiée. Cependant, cette approche se heurte à une limite lorsqu'elle est appliquée à des tableaux volumineux, en particulier pour les plages dépassant 7 374 lignes. En effet, la table sys.all_columns sous-jacente a une méthode alternative.
Méthode alternative pour générer une plage de lignes
Pour surmonter cette limitation, une méthode alternative utilise des CTE en cascade pour créer une « table de pointage ». Cette approche génère une liste de nombres jusqu'à une plage spécifiée. Voici un exemple :
DECLARE @Range AS INT = 7374 ;WITH E1(N) AS( -- 10 ^ 1 = 10 rows SELECT 1 FROM(VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))t(N) ), E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b), -- 10 ^ 2 = 100 rows E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b), -- 10 ^ 4 = 10,000 rows E8(N) AS(SELECT 1 FROM E4 a CROSS JOIN E4 b), -- 10 ^ 8 = 10,000,000 rows CteTally(N) AS( SELECT TOP(@Range) ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) FROM E8 ) SELECT * FROM CteTally
Cette méthode crée une table de pointage jusqu'à la @Range spécifiée, offrant un moyen plus efficace de générer une plage de lignes.
Considérations relatives aux performances
Les performances des différentes méthodes de génération de tableaux de pointage varient en fonction des exigences spécifiques et de l'environnement de la base de données. Pour une comparaison complète des performances, reportez-vous à des ressources externes telles que l'article de Jeff Moden et d'autres études de recherche.
Résumé
La sélection d'une plage de lignes dans SQL Server est une opération courante tâche avec diverses techniques disponibles. Comprendre les limites et les considérations de performances de chaque approche permet de sélectionner la méthode la plus efficace pour le scénario spécifique. L'approche CTE en cascade présentée ici offre un moyen fiable et évolutif de générer un tableau de pointage jusqu'à un grand nombre de lignes, surmontant les limitations rencontrées dans d'autres méthodes.
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!