SQL 2000
Die NED Tabelle hat einen Fremdschlüssel für die NED.RowID SIGN Tabelle
Die SIGN-Tabelle hat einen Fremdschlüssel auf die Tabelle NED SIGN.SignID zu NED.SignID
Die RowID und SignID SIGN.RowID sind gruppierten Primärschlüssel, die GUIDs (nicht meine Wahl)
die WHERE-Klausel ist, ist:Warum wird mein Clustered-Index gescannt?
FROM
[SIGN] A
INNER JOIN NED N ON A.SIGNID = N.SIGNID
INNER JOIN Wizard S ON A.WizardID = S.WizardID
INNER JOIN [Level] SL ON N.LevelID = SL.LevelID
LEFT JOIN Driver DSL ON SL.LevelID = DSL.LevelID
AND DSL.fsDeptID = @fsDeptID
INNER JOIN [Character] ET ON S.CharacterID = ET.CharacterID
INNER JOIN Town DS ON A.TownID = DS.TownID
WHERE
(A.DeptID = @DeptID OR
S.DeptID = @DeptID
AND
A.[EndTime] > @StartDateTime AND A.[StartTime] < @EndDateTime
AND
A.NEDStatusID = 2
Warum gibt es einen Index-Scan auf der SIGN-Tabelle für diese Abfrage? Was würde einen Index-Scan für einen gruppierten Index verursachen? Danke
Ich muss fragen, was Sie von dieser Abfrage erwarten oder warum Sie denken, dass ein Index-Scan in diesem Fall ein Problem ist? – Welbog
Kommen Sie von einem anderen DBMS und erwarten etwas wie einen Hash-Join oder Cluster-Join? Wenn ja, sollten Sie beachten, dass ein gruppierter Index in SQL Server einfach ein Strukturindex ist, bei dem die Blattknoten die Datenseiten sind. Wenn Sie das bereits wussten, ignorieren Sie diesen Kommentar. – kdgregory