【发布时间】:2010-03-30 17:41:59
【问题描述】:
我正在尝试优化一些极其复杂的 SQL 查询,因为它需要很长时间才能完成。
在我的查询中,我使用许多相同的函数动态创建了 SQL 语句,因此我创建了一个临时表,其中每个函数只被调用一次而不是多次调用 - 这将我的执行时间缩短了 3/4。
所以我的问题是,如果说 1,000 次 datediff 计算缩小到 100 次,我能期望看到很大的不同吗?
编辑: 查询如下所示:
SELECT DISTINCT M.MID, M.RE FROM #TEMP INNER JOIN M ON #TEMP.MID=M.MID
WHERE ( #TEMP.Property1=1 ) AND
DATEDIFF( year, M.DOB, @date2 ) >= 15 AND DATEDIFF( year, M.DOB, @date2 ) <= 17
这些是作为字符串动态生成的(以零碎的形式组合在一起),然后执行,以便可以在每次迭代中更改各种参数 - 主要是最后几行,包含各种 DATEDIFF 查询。
大约有 420 个这样的查询,这些日期差异是这样计算的。我知道我可以轻松地将它们全部拉入临时表(1,000 个日期差异变为 50 个)-但这值得吗,它会在几秒钟内产生任何影响吗?我希望能在十分之一秒内得到更好的改进。
【问题讨论】:
-
发布查询 - 当您在 2+ 个深度子查询中执行 DATEDIFF 时,并不能真正帮助您确认您的假设...
标签: sql query-optimization datediff