首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询优化阶段会考虑到这一点吗?

查询优化阶段会考虑到这一点吗?
EN

Stack Overflow用户
提问于 2011-08-03 05:55:01
回答 1查看 117关注 0票数 5

我有一个带有日期列StartDate索引的表。我只是想知道查询优化阶段如何处理以下形式的查询:

代码语言:javascript
复制
SELECT * 
FROM <dbo.TABLE> 
WHERE (StartDate BETWEEN '2010-01-01' AND '2010-01-10')
OR (StartDate BETWEEN '2010-01-05' AND '2010-01-15')

这两个日期之间有重叠。我应该自己进行优化,将日期作为(StartDate BETWEEN '2010-01-01' AND '2010-01-15')提供给它吗?还是SQL引擎可以自己优化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-03 06:12:25

将其与变量和常量进行比较:计划应该不同。

SQL Server可以针对常量进行优化,但其目标是对变量进行重用。因此,该计划在变量方面更具一般性。当使用常量时,不需要“通用的可重用计划”,因为如果常量改变,它将是一个新的计划

“可变”计划不会考虑像end < start这样的条件,因为它会被常量短路。

正如在对问题的评论中所指出的,行为是预期的

你应该用"Forced Parameterization“对常量做同样的事情,但是我还没有试过。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6919166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档