日期:2014-05-19  浏览次数:20508 次

这就是最快地存储过程?
以下是号称最快的存储过程
Set   Rowcount   100000
declare   @id   varchar(10)
select     @ID=id   from   tbcj   Order   by   id
print   @id
Set   Rowcount   10
Select   *   From   tbcj   Where   id> =@ID   Order   By   id
Set   Rowcount   0
执行用了3秒

以下这个简单的,用了1秒不到
select   top   10   *   from   tbcj  
where   id   not   in   (select   top   100000   id   from   tbcj)

我搞不懂了,是我的测试方法有问题还是被人忽悠了?
是不是select     @ID=id   from   tbcj   Order   by   id执行了太多次赋值导致的?

------解决方案--------------------
select @ID=id from tbcj Order by id
赋值 了很多次

not in 也不是很快,用not exists 应会更快


------解决方案--------------------
不要用set rowcount,数据量多了会比较慢
SELECT TOP 10 * FROM tbcj
WHERE id > (SELECT MAX(id) FROM (SELECT TOP 100000 id FROM tbcj ORDER BY id) AS tblTEMP)
ORDER BY id