MSSQL中内置的分页功能(mssql自带分页)

随着日渐复杂的数据库应用,分页功能成为各种RDBMS系统中不可忽视的一部分。尤其在MSSQL中更是无处不在。MSSQL中内置的分页功能提供了比较好的支持,让我们能够控制查询的数据量,减少不必要的计算量,提高系统的性能,也为系统的正常运行提供了保障。那么, MSSQL 内置的分页功能究竟有哪些,具体怎么使用呢?

1、OFFSET…FETCH方式

OFFSET…FETCH是MSSQL提供的最新分页方式,它相对较为简便和友好。语法如下:

SELECT  * 
FROM table_name
OFFSET n
FETCH NEXT m ROWS ONLY

上面的语句通过OFFSET n来控制查询起始位置,FETCH NEXT m ROWS ONLY在这里表示要查询m条记录。比如,我们想要查询第6-10条记录,OFFSET就可以设置为5,FETCH NEXT为5。

2、ROW_NUMBER() OVER()方式

ROW_NUMBER() OVER()方式的语法如下:

select * 
from(select *,
row_number over(order by id) as rown
from table_name
)T
where rown between m and n

上面的语句中row_number() over()会为查询出来的行生成一个递增列,用户可以根据rown字段来控制分页(即将查询结果集过滤为rown between m and n)。比如如果要查询第6-10条记录,m设置为6,n设置为10即可实现分页的目的。

ROW_NUMBER() OVER()方式最大的缺陷是,每次查询都会把整个表都查询出来,然后在内存中根据rown来过滤,开销相对较大。

3、TOP关键字方式

TOP关键字的分两种,TOP n 和TOP n percent。 TOP n 用来表示取前n条记录,TOP n percent用来表示取查询结果的前n%记录。TOP关键字的使用也很简单,语法如下:

SELECT TOP n  * 
FROM table_name

以及:

SELECT TOP n percent  * 
FROM table_name

TOP关键字更多的用来处理只需要取前几条数据的情况,而后再用ORDER BY把所有结果排序,就能实现多条记录的分页效果。

从上面三种方法来看,在MSSQL中,OFFSET…FETCH方式更为优秀,用户只需要指定起始位置,以及需要抓取的记录数,即可实现分页的效果,开销很小,可以有效提升查询性能。

总之,MSSQL中提供了OFFSET…FETCH、ROW_NUMBER() OVER()和TOP关键字三种实现分页功能的方式。用户可以根据具体的实际情况来选择合适自己的方式,可以有效地控制查询数据量,提高系统性能,而不容忽视这三种方法中任何一种,使得系统运行更加稳定可靠。


数据运维技术 » MSSQL中内置的分页功能(mssql自带分页)