Explication détaillée de la technologie de pagination SQL Server
La pagination (ou sauter un nombre spécifique de lignes et obtenir un nombre spécifié de lignes) est une fonctionnalité courante dans les systèmes de bases de données. La fonction de pagination personnalisée peut contrôler de manière flexible le processus de récupération des données. Cet article montre comment implémenter la pagination dans différentes versions de SQL Server, notamment SQL Server 2012 et versions antérieures.
Conditions d'enquête
Supposons qu'il existe une requête pour récupérer les identifiants de publication à partir d'une table de base de données. La requête actuelle récupère les 10 principaux identifiants de publication en fonction de la dernière date. L'objectif est d'implémenter la pagination afin qu'un nombre spécifique de lignes puisse être ignoré et récupéré, récupérant ainsi les « 10e au 20e messages les plus récemment actifs » plutôt que simplement le « top 10 ».
Implémentation de SQL Server 2012
Dans SQL Server 2012, la pagination peut être facilement réalisée à l'aide des mots-clés OFFSET
et FETCH NEXT
:
<code class="language-sql">SELECT PostId FROM ( SELECT PostId, MAX(Datemade) AS LastDate FROM dbForumEntry GROUP BY PostId ) SubQueryAlias ORDER BY LastDate DESC OFFSET 10 ROWS -- 跳过 10 行 FETCH NEXT 10 ROWS ONLY; -- 获取接下来的 10 行</code>
Cette requête ignorera les 10 premières lignes et obtiendra les 10 lignes suivantes, récupérant ainsi les identifiants de publication des « 10e à 20e » publications actives les plus récentes.
Implémentation de SQL Server 2008
Dans SQL Server 2008 et les versions antérieures, la mise en œuvre de la pagination est plus complexe. Vous pouvez utiliser une combinaison de la fonction ROW_NUMBER()
et d'un CTE (Common Table Expression) pour obtenir le résultat souhaité :
<code class="language-sql">DECLARE @Start INT DECLARE @End INT SELECT @Start = 10, @End = 20; ;WITH PostCTE AS ( SELECT PostId, MAX(Datemade) AS LastDate ,ROW_NUMBER() OVER (ORDER BY PostId) AS RowNumber FROM dbForumEntry GROUP BY PostId ) SELECT PostId, LastDate FROM PostCTE WHERE RowNumber > @Start AND RowNumber <= @End;</code>
Dans cet exemple, deux variables @Start
et @End
sont déclarées pour définir les paramètres de pagination. La requête calcule d'abord le numéro de ligne de chaque publication à l'aide de la fonction ROW_NUMBER()
. Il utilise ensuite CTE pour filtrer les résultats en fonction des paramètres de pagination spécifiés et récupérer les identifiants de publication requis et leurs dernières dates.
En utilisant des techniques appropriées, une pagination personnalisée peut être implémentée dans SQL pour améliorer la flexibilité de récupération des données et optimiser les requêtes de base 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!