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
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>5
le code SQL
select top 20 tempcolumn=0,* from clazz
code SQL
select row_number()over(order by tempcolumn)temprownumber,* from (修改过的查询)t
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!