2016-08-08 5 views
0

Ich habe viele Artikel gelesen, in denen erwähnt wird, dass die Verwendung einer GUID als gruppierter Index (oder Primärschlüssel) in SQL Server zu Leistungsproblemen führen kann.Gibt es Probleme bei der Verwendung von GUIDs als indizierte Felder in SQL Server?

Aufgrund einiger Design-Entscheidungen, brauche ich wirklich ein Feld mit GUID darin für jede Zeile einer Tabelle.

Wenn ich den Primärschlüssel dieser Tabelle als Autoincrement-Ganzzahl definieren und die GUID als normale Spalte hinzufügen, die indiziert ist, habe ich ähnliche Leistungsprobleme wie die GUID als Primärschlüssel?

Edit: Als Randbemerkung, ich weiß, dass GUID als ein Primärschlüssel ist eine schlechte Idee, ich frage, wenn ich Performance-Probleme, wenn ich es als indiziert (nicht geclusterten) Feld gesetzt

+3

Mögliche Duplikate von [Welche Best Practices gelten für die Verwendung einer GUID als Primärschlüssel, insbesondere hinsichtlich der Leistung?] (Http://stackoverflow.com/questions/11938044/what-are-the-best-practices-for- -a-guid-as-a-primary-key-special-rega) –

+0

Ich lese auch viele Artikel wie das. Aber dann habe ich versucht, mich selbst herauszufinden, indem ich eine T-SQL-Schleife erstellt habe und über Nacht gegangen bin. Zu meiner Überraschung war die Ladezeit der Seite fast die gleiche wie zuvor, außer für die erste Anfrage nach dem Build. Um genau zu sein gab es 4.5 Lakhs Einträge in der db –

+0

, wenn Sie wie zuvor sagen, dass Sie, wenn Sie den Primärschlüssel in autoincrement int geändert haben, und ein Feld als indizierte Guid verlassen, die gleichen Ergebnisse als wenn Sie guid als hatten ein Primärschlüssel? – Cruces

Antwort

0

Was Art des Index, den Sie für das GUID-Feld verwenden möchten? Gruppiert? Einzigartig? Wenn nur einmalig, dann unterscheidet sich GUID nicht von anderen eindeutigen Feldern. Sie können es ohne Zweifel verwenden. Im Falle eines gruppierten Indexes wird die Leistung beeinträchtigt. Sie können Sequential GUID verwenden. Es kann einige Leistungsprobleme lösen. Das Generieren von GUID auf der Clientseite kann ebenfalls die Leistung verbessern.

+0

Die GUID wird nicht vom SQL-Server erstellt. Grundsätzlich wird die GUID von einer Android-Anwendung erstellt, sie wird zusammen mit den anderen Daten an den SQL-Server gesendet und fordert dann die ID zurück, die der SQL Server ihr zugewiesen hat. Ich dachte daran, sie indexieren zu lassen, um den SQL Server zu beschleunigen suche nach der ID, die ihr zugewiesen wurde – Cruces

Verwandte Themen