我正致力于提高运行缓慢的SQL存储过程的性能。
通常我正在尝试优化查询使用的执行计划。我的问题涉及下面的SQL片段;这个SQL是否特别适用于Max
函数?
SELECT MAX(Audit_Date) AS DATE,
FK_RegisterID
FROM dbo.[Audit Result Entry Detail]
INNER
JOIN dbo.[Audit Register]
ON dbo.[Audit Result Entry Detail].FK_RegisterID = dbo.[Audit Register].PK_ID
WHERE ((SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, Audit_Date))) >= @StartDate
AND (SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, Audit_Date))) <= @EndDate)
AND part_number IN (@ParticipantNumber)
GROUP
BY FK_RegisterID
任何帮助都会受到赞赏。
答案 0 :(得分:0)
感谢所有评论,他们非常有帮助。我在网上找到了这个,这也帮助我理解了如何使我的SQL查询更加可靠。
使SQL查询不可搜索的典型情况是 在WHERE子句中包含一个对列值进行操作的函数。 WHERE子句不是唯一可以解决问题的条款; 它也可以对ORDER BY,GROUP BY和HAVING子句产生影响。
另一方面,SELECT子句可以包含非sargable 表达式没有对性能产生负面影响。