首页 > 技术文章 > sql 分页查询

Innocent-of-Dabber 2018-02-07 10:58 原文

数据过多时sql中返回数据,开销大,用户还不一定会用到。这时使用sql分页查询,更具用户操作返回对应的数据就能极大程度提高效率。

分页有多种方法:top in、exist、row_number()等,在此只叙述相对高效的

max/top  分页方式

1.原始的

  select * from dbo.pagetest where id >(select max(id) from (select top(9900) id from dbo.pagetest order by id)a) order by id

2.封装存储过程

 create Proc pageSeparate(
 @count int, -- 数据条数
 @tabName nvarchar(50), --表名
 @pageIndex int --区间 多少也开始查询
)
as
begin
 declare @sqlStr nvarchar(max)
 set @sqlStr = 'select * from '+@tabName+' where id >(select max(id) from (select top('+cast((@pageIndex*@count)as nvarchar(20))+') id from '+@tabName +' order by id)a) order by id'
 print @sqlStr
 exec(@sqlStr)
end

推荐阅读