4 Stimmen

Geclusterter/nicht geclusterter Index auf eindeutiger Bezeichnerspalte in SQL Server

Ich habe die verschiedenen Fragen/Antworten hier gelesen, die im Grunde darauf hinweisen, dass mit einem geclusterten Index auf eine eindeutige Bezeichnerspalte eine schlechte Wahl aus Leistungsgründen ist. Unabhängig davon muss ich einen eindeutigen Bezeichner als Primärschlüssel verwenden, und ich möchte NICHT newsequentialid() verwenden, da die generierten Werte einander zu ähnlich sind (ich brauche mehr zufällige IDs, damit Benutzer nicht [vernünftig] eine andere ID "erraten" können).

Wie lässt sich diese PK also am besten indizieren? Auch wenn ein geclusterter Index für diese Spalte nicht ideal ist, ist er besser als ein "eindeutiger, nicht geclusterter" Index?

Ich verwende SQL Server 2005.

10voto

mmx Punkte 400975

Zunächst einmal, wenn Sie versuchen, die NEWID() um Zufälligkeit zu erreichen (mehr als nur zufällig auszusehen), sind Sie in Schwierigkeiten.

Dies ist in der Regel keine ideale Wahl, da andere Indizes auf den Schlüssel des geclusterten Index verweisen und ein langer Schlüssel des geclusterten Index die Leistung aller Indizes beeinträchtigt. Sie könnten einen IDENTITY Integer-Spalte und machen Sie diese zum geclusterten Index und erstellen Sie einfach einen nicht geclusterten eindeutigen Index für die uniqueidentifier Spalte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X