同样的SQL,同样的库,WHERE条件时间点不一样,速度差异巨大

hertcloud 2012-02-07 10:19:26
以下两段sql只有where 条件中的updatetime范围不一样,第一段非常快后一段很慢 为什么呢? 并且后一段的updatetime在第一段的范围内!求高人解答!


set statistics io on

declare @PageIndex int
declare @PageSize int
set @PageIndex=1
set @PageSize=10000
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY E.FormCode asc) AS ROWNUM ,E.FormCode
FROM OrderForm(NOLOCK) E
WHERE Status in(-6,-5,24,25)
and '2007/2/7 15:59:50'<=updateTime and updateTime<= '2012/2/9 15:59:50'
)TempTable
WHERE ROWNUM BETWEEN(@PageIndex-1)*@PageSize+1 AND @PageIndex*@PageSize


----------------------------
set statistics io on
declare @PageIndex int
declare @PageSize int
set @PageIndex=1
set @PageSize=100
SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY E.FormCode asc) AS ROWNUM
,E.FormCode
FROM OrderForm(NOLOCK) E
WHERE Status in(-6,-5,24,25)
and '2011/2/7 15:59:50'<=updateTime and updateTime<= '2011/2/11 15:59:50'
)TempTable
WHERE ROWNUM BETWEEN(@PageIndex-1)*@PageSize+1 AND @PageIndex*@PageSize
...全文
382 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2012-02-08
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071024/09/88088a62-7bd8-40d8-b57d-3cf7ef3bee21.html

[Quote=引用 9 楼 roy_88 的回复:]
如:date>=startdate and date<=enddate 时,换做between 要快
如:在时间列建clustered索引时,会更快
[/Quote]
叶子 2012-02-08
  • 打赏
  • 举报
回复

SELECT E.FormCode FROM OrderForm(NOLOCK) E
WHERE Status in (-6,-5,24,25)
and updateTime between '2011/2/7 15:59:50' and '2011/2/9 15:59:50'

SELECT E.FormCode FROM OrderForm(NOLOCK) E
WHERE Status in (-6,-5,24,25)
and updateTime between '2011/2/7 15:59:50' and '2011/2/11 15:59:50'

--同时选中上面代码,然后Ctrl+L 看下执行计划
叶子 2012-02-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 hertcloud 的回复:]
第一段非常快后一段很慢 为什么呢?
并且后一段的updatetime在第一段的范围内!求高人解答!
[/Quote]

'2007/2/7 15:59:50'<=updateTime and updateTime<= '2012/2/9 15:59:50'

'2011/2/7 15:59:50'<=updateTime and updateTime<= '2011/2/11 15:59:50'

后一段不在第一段范围内,比第一段范围大。

看看'2012/2/9 到 2011/2/11 之间的数据量是不是特别大?
紫竹林畔 2012-02-08
  • 打赏
  • 举报
回复
选择性不同
所采取的执行计划就可能不同
所以在很多时候
高选择性的执行很快 反之很慢
勿勿 2012-02-08
  • 打赏
  • 举报
回复
两个时间段的数据相差多少 看下执行计划。
hertcloud 2012-02-07
  • 打赏
  • 举报
回复
补充 FormCode 及 UpdateTime都有索引

22,199

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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