Maison >base de données >tutoriel mysql >Comment puis-je paginer efficacement de grands ensembles de données dans SQL Server tout en conservant les performances ?
Optimisation de la pagination dans SQL Server pour les grands ensembles de données
La présentation efficace de grands ensembles de données aux utilisateurs nécessite une pagination – affichant seulement une partie des résultats par page. Cependant, la mise en œuvre de la pagination sans impact sur les performances est cruciale, en particulier lorsqu'il est nécessaire d'effectuer au préalable un décompte total des résultats.
Anciennes versions de SQL Server (2000-2008) : numérotation des lignes
Avant SQL Server 2012, la numérotation des lignes était la technique de pagination standard. Cela impliquait d'attribuer un numéro de ligne à l'aide de ROW_NUMBER()
et de filtrer en fonction de la taille et du numéro de la page. Bien que fonctionnelle, cette approche s'est avérée inefficace avec des ensembles de données importants.
SQL Server 2012 et au-delà : OFFSET
et FETCH
SQL Server 2012 a introduit les clauses supérieures OFFSET
et FETCH
. Ceux-ci sautent directement un nombre spécifié de lignes et récupèrent uniquement le sous-ensemble requis. Cela améliore considérablement les performances des grands ensembles de données en éliminant la surcharge liée à la numérotation des lignes.
Requête illustrative
La requête suivante montre la récupération des 10 premières lignes et du nombre total de lignes à l'aide de OFFSET
et FETCH
dans SQL Server 2012 et versions ultérieures :
<code class="language-sql">DECLARE @RowsPerPage INT = 10; WITH TotalResults AS ( SELECT COUNT(*) OVER() AS TotalRows FROM TableName ) SELECT * FROM TableName ORDER BY id OFFSET 0 ROWS FETCH NEXT @RowsPerPage ROWS ONLY; SELECT TotalRows FROM TotalResults;</code>
Remarques importantes :
ORDER BY
est obligatoire lors de l'utilisation de OFFSET
et FETCH
.OFFSET
doit accompagner FETCH
; ils ne peuvent pas être utilisés avec TOP
.OFFSET
et FETCH
améliore considérablement les performances, en particulier avec des ensembles de données étendus.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!