当前位置: 代码迷 >> ASP.NET >> ROW_NUMBER 做了个测试,发现和网上说的不一样呢,该怎么解决
  详细解决方案

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

热度:6687   发布时间:2013-02-25 00:00:00.0
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连续与否没关系吧
  相关解决方案