SQLServer数据库的分页查询处理方法综述

sqlserver2008不支持关键字的限制,所以它的分页SQL查询将不会在MySQL的方式进行。幸运的是,SQLServer2008提供顶级的,rownumber等关键词,所以这些页面可以翻阅这些关键词。

以下是我在网上咨询过的几个查询脚本的编写:

几个SQLServer2008高效分页SQL查询语句

TOP计划:

SQL代码:


选择前10从表1
在我不在(ID从表1从选择上)


最大值:

SQL代码:


选择前10从表1
id >(选择max(id))
从(选择上从表1订单ID的位置ID)TT)


行:

SQL代码:


选择*
(从
选择row_number()以上(以tempcolumn)temprownumber,*
(选择上从起始位置+ 10 tempcolumn = 0,从表1)T
TT)
在temprownumber >开始位置


分页的3种方式是max、顶部和行。

效率:

1:排

2:最大

3:顶

缺点:

马克斯:用户必须编写复杂的SQL,不支持非唯一列排序。

顶层:复杂SQL必须由用户编写,不支持复合主键。

行:不支持SQLServer2000

测试数据:

共有320万个数据,每页显示10条数据,分别测试了2万页、15万页和32万页。

页码,顶层方案,马克斯格式,行格式

2万、60ms,46ms,33ms

15万、453ms,343ms,310ms

32万、953ms,720ms,686ms

这是一种通过程序连接SQL语句的分页方案,

用户所建议的SQL语句不需要编写复杂的SQL逻辑。

中午的用户提供SQL如下

SQL代码




SELECT * FROM表


从第五,查询5。经过处理后,SQL变成

SQL代码




选择*
(从
选择row_number()以上(以tempcolumn)temprownumber,*
从(选择前10 tempcolumn = 0,从表1)T
TT)
在temprownumber > 5


你什么意思发生故障

首先,将用户的输入SQL语句更改为稍微修改

选择后加上顶部开始位置+条数

Add a list of tempcolum and turn to this

SQL代码




选择前20 tempcolumn = 0 *类


嵌套一层,以便可以查询行号。

那一栏是在这里订购的。

(我不知道为什么row_number SQLServer功能必须通过)

SQL代码




选择row_number()以上(以tempcolumn)temprownumber,*
从(修改的查询)t


设置一个图层,过滤掉小于起始位置的行。

SQL代码




选择*(第二层)TT
在temprownumber > 10


总结

以上是SQLServer数据库的分页查询处理萧边介绍的简要总结。我们希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。