Maison > Article > base de données > Expliquer la méthode de traitement des requêtes de pagination de sqlserver
Voici plusieurs façons d'écrire des scripts de requête que j'ai trouvés en ligne et que je partage par la présente sur la plateforme Script House pour votre référence
sqlserver2008 ne prend pas en charge la limite de mots clés, donc ses instructions de requête SQL de pagination ne le seront pas pouvoir utiliser la méthode MySQL Heureusement, sqlserver2008 fournit des mots-clés tels que top et rownumber, afin que la pagination puisse être réalisée via ces mots-clés.
Voici les méthodes d'écriture de plusieurs scripts de requête que j'ai trouvés sur Internet :
Plusieurs instructions de requête SQL de pagination efficaces sqlserver2008
meilleure solution :
code SQL :
select top 10 * from table1 where id not in(select top 开始的位置 id from table1)
max :
code SQL :
select top 10 * from table1 where id>(select max(id) from (select top 开始位置 id from table1 order by id)tt)
ligne :
Code SQL :
select * from ( select row_number()over(order by tempcolumn)temprownumber,* from (select top 开始位置+10 tempcolumn=0,* from table1)t )tt where temprownumber>开始位置
3 méthodes de pagination, à savoir plan max, plan haut, plan rangée
Efficacité :
1ère : rangée
2ème : max
N°3 : top
Inconvénients :
max : L'utilisateur doit écrire du SQL complexe et ne prend pas en charge le tri de colonnes non unique
haut : les utilisateurs doivent écrire du SQL complexe, les clés primaires composites ne sont pas prises en charge
ligne : sqlserver2000 n'est pas pris en charge
Données de test :
Il y a 3,2 millions de données au total, 10 données sont affichées sur chaque page, et 20 000 pages, 150 000 pages et 320 000 pages ont été testées respectivement.
Numéro de page, plan supérieur, plan max, plan de rangée
20 000, 60 ms, 46 ms, 33 ms
150 000, 453 ms, 343 ms, 310 ms
320 000, 953 ms, 720 ms, 6 ms
est une solution de pagination qui fusionne les instructions SQL via un programme
Les instructions SQL mentionnées par les utilisateurs ne nécessitent pas l'écriture d'une logique SQL complexe
Aucun utilisateur ne fournit SQL comme suit
🎜>
code SQL
select * from table1À partir du 5ème élément, interrogez 5 éléments, et le sql devient
après traitement code SQL
select * from ( select row_number()over(order by tempcolumn)temprownumber,* from (select top 10 tempcolumn=0,* from table1)t )tt where temprownumber>5Qu'est-ce que cela signifie ? Décomposez-le Tout d'abord, modifiez légèrement l'instruction SQL saisie par l'utilisateur Ajoutez la première position de départ + le nombre d'éléments après la sélection pour devenir puis ajoutez une colonne de tempcolum, cela devient comme ceci
le code SQL
select top 20 tempcolumn=0,* from clazzest imbriqué sur un niveau, afin que le numéro de ligne puisse être interrogé La colonne à l'instant est utilisée pour commander par ici (je ne sais pas pourquoi la fonction row_number de sqlserver doit trier par)
code SQL
select row_number()over(order by tempcolumn)temprownumber,* from (修改过的查询)tMettez un autre calque et filtrez les lignes dont les numéros de ligne sont inférieurs à la position de départ
code SQL
select * from (第二层)tt where temprownumber>10
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!