效率问题

wth1150 2006-09-05 08:54:32
select top 3 * from all_data where id not in (select top 2 id from all_data order by id) order by id

DECLARE @BEGINROW INT,@ENDROW INT,@COUNTS INT,@COUNTS1 INT
SET @BEGINROW=300
SET @ENDROW=40
SELECT @COUNTS=@ENDROW-@BEGINROW+1
SELECT @COUNTS1=@BEGINROW-1
EXEC('SELECT TOP '+@COUNTS+
' * FROM all_data WHERE ID NOT IN (SELECT TOP '+@COUNTS1+' ID FROM all_data)')
为什么上句明显比下句慢很多
...全文
234 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuya8115 2006-09-07
  • 打赏
  • 举报
回复
不清楚是怎么回事
47522341 2006-09-07
  • 打赏
  • 举报
回复
理论上应该是下面的语句执行速度比较慢才对。
wth1150 2006-09-06
  • 打赏
  • 举报
回复
不太明白。能清楚点解释吗
yuehaiyang 2006-09-05
  • 打赏
  • 举报
回复
慢可能是因为你用的是动态sql,对于动态sql,ms sql server是没办法进行优化和预编译的
jaway 2006-09-05
  • 打赏
  • 举报
回复
可能有共享锁
wth1150 2006-09-05
  • 打赏
  • 举报
回复
执行下就知道。两句是一样,我也觉得怪
xyxfly 2006-09-05
  • 打赏
  • 举报
回复
不会吧?

那你这样比呢
exec('select top 3 * from all_data where id not in (select top 2 id from all_data order by id) order by id')

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧