黑马程序员技术交流社区

标题: sqserver05l中 使用top...not in 和 ROW_NUMBER() [打印本页]

作者: 刘建素    时间: 2012-7-20 16:20
标题: sqserver05l中 使用top...not in 和 ROW_NUMBER()
在sqlserver05中使用top...not in 和 ROW_NUMBER() over(order by 字段 desc) as ROWNUMBER 两种分页有什么区别是不是大数据两的话使用ROW_NUMBER()效率比较低啊
作者: 许庭洲    时间: 2012-7-20 16:33
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语句时间短,从而执行效率比较高。
作者: 刘建素    时间: 2012-7-20 16:35
许庭洲 发表于 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:40
刘建素 发表于 2012-7-20 16:35
两种分页 数据量较小的话 应该看不出来吧

是啊,若后台数据库的指定表内数据是几万条记录,用top分页最好,若该表数据量很小,建议用row_number() 分页分页吧!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2