【问题标题】:SQL sargable and performance tuningSQL sargable 和性能调优
【发布时间】:2014-03-17 17:02:20
【问题描述】:

我正在使用以下 where 谓词从我们的一张 DW 表中仅获取周一到周五的门票。

SET DATEFIRST 1

SELECT TicketID 
FROM Tickets AS T
WHERE DATEPART(DW,T.StartDate) BETWEEN 1 AND 5 ....`

如果DATEPART 谓词是 sargable,可以告诉我吗?

我查看了实际的执行计划,即使使用DATEPART 函数,它也使用索引查找。

我们已经通过修改 where 谓词、分析计划、设置 io on 统计信息等优化了许多旧查询。对于这一点,我不确定是否有更好的方法只从周一到周五获取票证(轮班..)?

【问题讨论】:

    标签: sql datepart sql-tuning


    【解决方案1】:

    由于您的 BETWEEN 子句,您的查询的问题可能是索引选择性。如果您选择 7 个工作日中的 5 个工作日,优化器将执行表扫描。

    【讨论】:

    • 我们之前已经使用过索引搜索而不是表扫描。无论如何,我们现在将设计更改为日期维度连接,而不是 where 谓词。
    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多