我试图优化一些可怕的复杂的SQL查询,因为它需要很长时间才能完成。SQL DATEDIFF(年,...,...)昂贵的计算?
在我的查询中,我用很多相同的函数动态地创建了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个查询,其中这些datediffs的计算方式如此。我知道我可以很容易地将它们全部放入临时表中(1,000年以上),但它是否值得,它会在几秒钟内发生什么变化?我希望比十分之几秒有更好的改善。
发布查询 - 确实无法帮助您确认在2深度子查询中执行DATEDIFF时的假设... – 2010-03-30 17:46:49