2009-05-09 17 views
2

Wenn Sie eine GUID als Primärschlüssel einfügen, durchläuft der Datenbankserver jede einzelne Zeile, um sicherzustellen, dass es kein Duplikat gibt, oder nimmt er einfach an, dass ein Duplikat nicht möglich oder sehr unwahrscheinlich ist?überprüft Sql Server beim Einfügen auf doppelte GUID?

mit int des DB-Server kann einfach die Taste erhöht aber nicht den Fall mit GUIDs

Antwort

5

Das ist die Verantwortung der Datenbanken, sobald Sie sagen, dass eine Spalte ein Primärschlüssel ist.

Es ist nichts, worüber Sie sich jetzt Gedanken machen müssen, lassen Sie die Datenbank sich darum kümmern.

Auch, da dies ein Primärschlüssel ist, wird es indiziert werden. So würde sich Ihre Vorstellungskraft über das Durchgehen jeder Zeile (oder einen Tabellenscan) auf dieser Ebene nicht wirklich ergeben. Die Datenbank verwendet die Indexdatei, um sicherzustellen, dass nur ein eindeutiger Wert eingefügt werden kann.

0

Ich denke nur, wenn es ein Primärschlüssel oder ein eindeutiger Schlüssel

Aber wie ich weiß, GUIDs ist einzigartig.

+0

GUIDs sind im probabilistischen Sinne eindeutig, aber nicht garantiert (in vielen Implementierungen). –

+0

Ja, wenn Sie einen zufälligen GUID-Generator verwenden, erhalten Sie ein Duplikat (sehr unwahrscheinlich). Wenn Sie jedoch versuchen, diese zwei Duplikate als Primärschlüssel einzufügen, wird der Server einen Fehler melden. –

1

Alle Primärschlüssel sind eindeutig. Der Server ist also dafür verantwortlich, zu überprüfen, ob zwei Zeilen jemals denselben Primärschlüssel haben. Dies ist richtig, wenn der Primärschlüssel int, varchar, guid, was auch immer ist. Wie die Eindeutigkeitseinschränkung verifiziert wird, ist implementierungsdefiniert. Lassen Sie sich im Grunde nicht von Ihnen beunruhigen, es sei denn, Sie haben gezeigt, dass es eine Leistungsbarriere ist.

Immer Profil, bevor Sie sich übermäßig über die Leistung Sorgen machen.

Verwandte Themen