首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ROW_NUMBER 做了个测试,发现和网上说的不一样呢,该怎么解决

2012-05-01 
ROW_NUMBER 做了个测试,发现和网上说的不一样呢用的sqlserver 2008数据库总数据量是1933831,就算200万条数

ROW_NUMBER 做了个测试,发现和网上说的不一样呢
用的sqlserver 2008数据库

总数据量是1933831,就算200万条数据哇
提取的是第 1500001 到 1500050 这50条数据

SQL code
select top 50 * from testwhere id not in (select top 1500000 id from test )order by id ASC

耗时 00:00:02

SQL code
select * from(select ROW_NUMBER() over(order by id ASC)as idnum,* from test) as awhere idnum between 1500001 and 1500050

耗时 00:00:10

不是说大数据量ROW_NUMBER效率要高得嘛,咋我测试出来差别这么大呢?是数据量小了还是方法没对???

[解决办法]
查询分析器里面测试最好先清理下缓存

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
[解决办法]
row_number说的效率又不是这个
说的是计算行号的效率


你看一下执行计划,分析这两个sql倒底做了什么
[解决办法]
select top 50 * from test
where id not in (select top 1500000 id from test )
order by id ASC

这个只适合ID连续的情况下才能用,如果你想效率的话用oracle
[解决办法]
探讨

这个和id连续与否没关系吧

热点排行