431 Stimmen

Was sind die besten Verfahren für die Verwendung einer GUID als Primärschlüssel, insbesondere im Hinblick auf die Leistung?

Ich habe eine Anwendung, die GUID als Primärschlüssel in fast allen Tabellen verwendet, und ich habe gelesen, dass es Probleme mit der Leistung gibt, wenn GUID als Primärschlüssel verwendet wird. Ehrlich gesagt, habe ich keine Probleme gesehen, aber ich bin dabei, eine neue Anwendung zu starten, und ich möchte immer noch die GUIDs als Primärschlüssel verwenden, aber ich dachte daran, einen zusammengesetzten Primärschlüssel zu verwenden (die GUID und vielleicht ein anderes Feld).

Ich verwende eine GUID, weil sie gut und einfach zu verwalten sind, wenn man verschiedene Umgebungen hat, z. B. "production", "test" und "dev" Datenbanken, und auch für die Migration von Daten zwischen Datenbanken.

Ich werde Entity Framework 4.3 verwenden, und ich möchte die Guid im Anwendungscode zuweisen, bevor ich sie in die Datenbank einfüge. (d.h. ich möchte nicht, dass SQL die Guid generiert).

Was ist die beste Praxis für die Erstellung von GUID-basierten Primärschlüsseln, um die mit diesem Ansatz verbundenen vermeintlichen Leistungseinbußen zu vermeiden?

2voto

Zonus Punkte 1895

Sequentielle IDs machen es für Hacker oder Data Miner viel einfacher, Ihre Website und Daten zu kompromittieren. Behalten Sie das im Hinterkopf, wenn Sie eine PK für eine Website auswählen.

0voto

AnandPhadke Punkte 12626

Wenn Sie GUID als Primärschlüssel und erstellen Sie einen geclusterten Index, dann schlage ich vor, dass Sie den Standardwert von NEWSEQUENTIALID() Wert für sie.

0voto

MikeW Punkte 17

Ein weiterer Grund, eine Kennung nicht in der Benutzeroberfläche zu veröffentlichen, besteht darin, dass ein Konkurrent sehen kann, wie sich Ihre Kennung im Laufe eines Tages oder eines anderen Zeitraums erhöht, und so auf Ihr Geschäftsvolumen schließen kann.

-3voto

In den meisten Fällen sollte er nicht als Primärschlüssel für eine Tabelle verwendet werden, da er die Leistung der Datenbank stark beeinträchtigt. Nützliche Links zu den Auswirkungen von GUID auf die Leistung und als Primärschlüssel.

  1. https://www.sqlskills.com/blogs/kimberly/disk-space-is-cheap/
  2. https://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/

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