日期:2014-05-17  浏览次数:20412 次

SQL千万级的分页存储过程 好语句
SQL千万级的分页存储过程  好语句
  试过 1.row_number() 
       2.top.....not in
       3.top...max(id)


都是要半分钟以上的   拼接成语句的话
   有没有其他好多方法  通用
sql

------解决方案--------------------
要么添加新列,不然是没有办法了。


------解决方案--------------------
印象中sql server的分页就3种语句常用:
1. set rowcount
2. top
3. row_number()

以前看邹健的书里似乎还有用cursor什么的,似乎不多见
------解决方案--------------------
用top + left join 
select top 1000 * from a left join(select top 10000 id from a) as b
on a.id=b.id where b.id is null
------解决方案--------------------
又能通用,又要快,真的难实现,因为不同的表结构,不同的索引,不同的Join和Where条件,很难实现通用的分页.即使使用通用分页存储过程,性能也是非常好.

通用存储过程,可参考:
<通用分页存储过程(SQL Server 2005)>
http://www.cnblogs.com/wghao/archive/2013/01/23/2873256.html