Maison  >  Article  >  base de données  >  Expliquer la méthode de traitement des requêtes de pagination de sqlserver

Expliquer la méthode de traitement des requêtes de pagination de sqlserver

巴扎黑
巴扎黑original
2017-08-11 15:01:461833parcourir

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>5

Qu'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 clazz

est 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 (修改过的查询)t

Mettez 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn