我必须优化以下查询,执行时间太长
SELECT Devis.Numero_Devis,
contrat.Numero_contrat,
Devis.Id_Devis,
contrat.ID_contrat
FROM (SELECT ID_contrat AS Id_Devis,
Numero_contrat AS Numero_Devis
FROM [sch_DM_LMI].Fact_IU_contrat AS contrat
WHERE ( Code_Statut_Contrat = 'D' )) AS Devis
LEFT OUTER JOIN [sch_DM_LMI].Fact_IU_contrat AS contrat
ON Devis.Numero_Devis = contrat.Numero_contrat
contratD contrat.Code_Statut_Contrat = '1'
UNION
SELECT 'Inconnu' AS Numero_Devis,
'Inconnu' AS Numero_contrat,
'00000000-0000-0000-0000-000000000000' AS Id_Devis,
'00000000-0000-0000-0000-000000000000' AS ID_contrat
我创建了以下索引
CREATE NONCLUSTERED INDEX idx_Devis
ON [sch_DM_LMI].[Fact_IU_contrat] ([Code_Statut_Contrat])
INCLUDE ([ID_contrat],[Numero_contrat])
这里是执行计划:
UNION ALL
的更改。然后针对该查询,您想要Fact_IU_contrat(Code_Statut_Contrat, Numero_contrat)
和Fact_IU_contrat(Numero_contrat, Code_Statut_Contrat)
上的索引-是的,都是。您还可以在两个索引中都包含id_contrat
。