中国开发网: 论坛: 程序员情感CBD: 贴子 674219
haitao
分页利器,sql2005的row_number函数效率 [原创 2008-09-17 12:22:19]
——难得贴个技术贴。。。。。。

分页利器,sql2005的row_number函数效率 [原创 2008-09-17 12:22:19]

测试了一下,100万条记录的表,3个sql的开销
不加索引,各33%
加了索引,多次top倒腾占78%,后2个都是11%
那么,说明sql2005的row_number函数效率还是可以的:比多次top倒腾快6倍!

以前db2 v6的时候就使用过rank over,感觉不错,就怕效率会比普通的sql会低很多。这次的测试,看来至少sql2k5的row_number的效率不算低

declare @topn int,@skipm int
set @topn=100
set @skipm=3000

select *
from (
........select top (@topn) *
........from (
................select top (@skipm+@topn)
................*
................from serial
................order by pn desc,sn asc
........) a
........order by pn asc,sn desc
) a
order by pn desc,sn asc

select * from (
........select
........ROW_NUMBER ( ) OVER ( order by pn desc,sn asc ) as fno
........,*
........from serial
) a
where fno>@skipm and fno<=@skipm+@topn
order by fno

select * from (
........select
........ROW_NUMBER ( ) OVER ( order by pn desc,sn asc ) as fno
........,*
........from (
................select top (@skipm+@topn)
................*
................from serial
................order by pn desc,sn asc
........) a
) a
where fno>@skipm and fno<=@skipm+@topn
order by fno
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录