1

In einer alten Datenbank (SQL Server 2000), haben wir einen Clustered-Index, der wie folgt aussieht:Warum sollten Sie einen gruppierten zusammengesetzten Index haben, wenn keines der Felder zusammen verwendet wird?

CREATE CLUSTERED INDEX [IX_usr] ON [dbo].[usr] 
(
    [uid] ASC, 
    [ssn] ASC, 
    [lname] ASC 
) 

Die Sache ist, soweit ich weiß, keine dieser Felder werden in einer WHERE-Klausel verwendet, zusammen. Es gibt auch keinen Grund, irgendwelche von ihnen zusammen zu verwenden. Gibt es einen Grund dafür, einen Clustered-Index zu haben?

+0

Es könnte vom SQL Server Profiler-Tool vorgeschlagen worden sein, obwohl ich nicht sicher bin, ob das auf Sql Server 2000 ausgeführt wird. – Shawn

Antwort

1

Ein Grund, der mir einfällt, ist, wenn Sie gerade diese Felder in vielen Select-Anweisungen verwenden (nicht unbedingt in der Where-Klausel), könnte es als ein Deckungsindex dienen.

Zum Beispiel, wenn Sie viele Anfragen wie diese haben:

SELECT uid, ssn, lname FROM usr WHER uid = x 

Die Abfrage würde nie auf den Tisch schlagen müssen, um tatsächlich als alle erforderlichen Felder im Index enthalten sind.

+0

Nun, da Sie es erwähnen, scheint dies tatsächlich der Fall zu sein. –