A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘建素 中级黑马   /  2012-7-20 16:20  /  1589 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在sqlserver05中使用top...not in 和 ROW_NUMBER() over(order by 字段 desc) as ROWNUMBER 两种分页有什么区别是不是大数据两的话使用ROW_NUMBER()效率比较低啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
1,使用top分页
     select top 10 * from Orders a where a.orderid not in(select top 10 orderid from Orders order by orderid) order by a.orderid 
2,使用row_number() 分页
     select * from (select ROW_NUMBER() over(order by orderid) as rownumber,* from Orders) myresult  where rownumber between 10 and 20   
3,很明显使用top分页SQL语句执行时间比使用row_number() 分页执行SQL语句时间短,从而执行效率比较高。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2012-7-20 16:33
1,使用top分页
     select top 10 * from Orders a where a.orderid not in(select top 10 orderid from  ...

两种分页 数据量较小的话 应该看不出来吧
回复 使用道具 举报
刘建素 发表于 2012-7-20 16:35
两种分页 数据量较小的话 应该看不出来吧

是啊,若后台数据库的指定表内数据是几万条记录,用top分页最好,若该表数据量很小,建议用row_number() 分页分页吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马