SQL Server 2016中的慢查询

时间:2020-08-26 15:40:30

标签: sql-server

我有以下查询需要花费超过1个小时才能运行。

SELECT 
    RES.NUM_PROCESS,
    RES.ID_SYSTEM
FROM 
    RESTRICTED_PRECESS RES   -- 16'000 records
WHERE   
    RES.ID_SYSTEM <> 'CYFV'  
    AND RES.NUM_PROCESS NOT IN (SELECT PR.NUM_PROCESS  
                                FROM PRECESS PR  -- 8.000.000 records
                                WHERE PR.ID_SYSTEM = RES.ID_SYSTEM)

表的索引已经可以了。

CREATE NONCLUSTERED INDEX [IX1_PROCESS] ON [dbo].[PRECESS] 
(
    ID_SYSTEM ASC
)
INCLUDE(NUM_PROCESS)  

这是执行计划

enter image description here

有什么方法可以使此SELECT返回记录更快?

谢谢。

1 个答案:

答案 0 :(得分:2)

我将继续为您推荐这两个表的有用索引:

CREATE INDEX idx1 ON RESTRICTED_PRECESS (ID_SYSTEM, NUM_PROCESS);
CREATE INDEX idx2 ON PRECESS (ID_SYSTEM, NUM_PROCESS);

外部表RESTRICTED_PRECESS上的索引应加快WHERE子句的速度,并且它也完全覆盖SELECT子句。子查询中的表PRECESS上的索引也应该加快索引速度。

相关问题