sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。
下面是本人在网上查阅到的几种查询脚本的写法:
几种sqlserver2008高效分页sql查询语句
top方案:
sql code:
select top 10 * from table1
where id not in(select top 开始的位置 id from table
Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID、YEAR…(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2 第一种方案、最简单、普通的方法: 代码如下: SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 450
第一种方案、最简单、普通的方法:
代码如下:SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 45000 ID FROM ARTICLE ORDER BY YEAR DESC, ID DESC) ORDER BY YEAR DESC,ID DESC
平均查询100次所需时间:45s
第二种方案:
代码如下:SELECT * FROM ( SELECT TOP 30 * FROM (SELECT TOP 45030