ROW_NUMBER 做了个测试,发现和网上说的不一样呢,该怎么解决
ROW_NUMBER 做了个测试,发现和网上说的不一样呢用的sqlserver 2008数据库总数据量是1933831,就算200万条数
ROW_NUMBER 做了个测试,发现和网上说的不一样呢
用的sqlserver 2008数据库
总数据量是1933831,就算200万条数据哇
提取的是第 1500001 到 1500050 这50条数据
SQL codeselect top 50 * from testwhere id not in (select top 1500000 id from test )order by id ASC
耗时 00:00:02
SQL codeselect * 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
[解决办法]