我正在尝试优化一些极其复杂的 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 个)-但这值得吗,它会在几秒钟内产生任何影响吗?我希望比十分之一秒的改进更好。