TSQL加入日期表现

时间:2017-12-22 12:50:45

标签: sql sql-server database performance join

我有一个连接性能问题已被证明比预期更难破解。

SELECT distinct
             tx.[Counter],
             tx.[time],
             tx.[Count] PassengerProcessed,
             tx.Wait,
             tx.[Length] QueueLength,
             tx.DW_SK_WaitingTime,
             tx.QueueId,
             bc.AIRLINE
      FROM stg.TmpCheckInStep1  tx
           LEFT JOIN DSO_WaitingTime.stg.TmpBagCounter bc ON tx.[Counter] = bc.COUNTER_ID
           AND tx.[time] >= bc.ROLLED_ON_TM_UTC
           AND tx.[time] < bc.ROLLED_OFF_TM_UTC

tx表约有2000万行,BC表约为100万行。 当前的运行时至少需要几个小时。

这两个表都是工作流程的一部分,每晚都会删除它们并重新创建。

BC在Counter_ID上有一个非隐藏索引,其中包含AirlinedROLLED_ON_TM_UTCROLLED_OFF_TM_UTC

TX目前在Counter上有一个非clusted索引,不包括Time。我试图在索引中包含Time,但无济于事。

目前的执行计划如下: ExecutionPlan

我猜测它的大于,而不是破坏表现的条件。 如何改进查询或索引以加快速度?

修改
感谢到目前为止的建议 - 我正在测试Dan Guzman建议的聚集索引。没有DISTINCT,执行时间就会大大减少。执行计划在索引搜索上变为100%:brentozar.com/pastetheplan/?id = rJ6i5YcMf

0 个答案:

没有答案