您的位置:首页 > 数据库

SQL SERVER 2005分页查询语句

2010-03-19 09:44 441 查看
最近个项目需要用到SQL SERVER 2005的数据库,曾记得以前用2000的时候分页程序的SQL语句一直是个问题,不是效率不高就是难以理解。这次在网上查找资料的时候发现SQL SERVER 2005分页时的语句已经大有改变,先看语句:

WITH Article_CTE AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY [ArticleId]) AS RowNumber FROM n_Article
)
SELECT * FROM Article_CTE
WHERE RowNumber BETWEEN 0 AND 10

在SQL SERVER 2005中新引入了ROW_NUMBER()函数,配合后面的OVER按某字段进行排序然后再通过设置其范围来达到分页查询的目的,这样与Oracle中根据rownum字段进行分页查询便大同小异了。

首页用WITH创建个临时命名的结果集(这些结果集称为公用表表达式 (CTE)),对表中的每行先排序再设置其RowNumber数据,然后通过select查询,通过where设置查询条件来到达分页的目的。貌似在这过程中还是对表进行了全部查询,如果排序的字段很大很长的话也会很慢的,感觉还是没有Oracle的rownum效率高
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: