SQL Server的最佳联接策略/索引

时间:2018-12-06 12:37:47

标签: sql sql-server indexing

此查询的最佳联接策略/索引是什么:

SELECT 
    kwk.*, an.AuftragDatum, an.AbgabeDatum, an.BezahltDatum, an.AuftragStatus 
FROM 
    KundenWerbenKunden kwk
INNER JOIN 
    Auftrag an ON an.AuftragNummer = kwk.AuftragNummer
WHERE 
    kwk.Deleted = 0

KundenWerbenKunden包含103950行和103646 Deleted = 0行。

Auftrag具有3826552行。

在我的真实查询中,我进行了更多连接:

INNER JOIN 
    Filiale fn WITH (NOLOCK) ON an.FilialeID = fn.FilialeID 
INNER JOIN 
    Kunde kn ON an.KundeID = kn.KundeID 
OUTER APPLY 
    (SELECT DISTINCT KSKNr 
     FROM KdZuordnung 
     WHERE KundeID = kn.KundeID) zn 
LEFT JOIN 
    Anrede ann WITH (NOLOCK) ON kn.Anrede = ann.Anrede 
INNER JOIN 
    AuftragArt aa WITH (NOLOCK) ON an.AuftragArtID = aa.AuftragArtID 
INNER JOIN 
    AuftragGrund ag WITH (NOLOCK) ON an.AuftragGrundID = ag.AuftragGrundID 
INNER JOIN 
    AuftragType at WITH (NOLOCK) ON an.AuftragTypeID = at.AuftragTypeID 

1 个答案:

答案 0 :(得分:0)

对于此查询:

SELECT *
FROM KundenWerbenKunden kwk INNER JOIN
     Auftrag an
     ON an.AuftragNummer = kwk.AuftragNummer
WHERE kwk.Geloescht = 0;

由于对Geloescht的分布一无所知,我首先尝试在KundenWerbenKunden(Geloescht, AuftragNummer)Auftrag(AuftragNummer)上进行索引。