Ist es besser, einen Uniqueidentifier (GUID) oder einen Bigint für eine Identitätsspalte zu verwenden?
For SQL server ist es besser, eine uniqueidentifier(GUID) oder ein bigint-für eine identity-Spalte?
Kommentar zu dem Problem - Öffnen
Meinst du primary key? Man kann nicht eine GUID-identity-Spalte.
InformationsquelleAutor der Frage Aaron Fischer | 2009-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hängt davon ab, was du tust:
int
ist wohl groß genug.bigint
oder eine sequentielle guid.Guid
ist wirklich toll.Update
Einige weitere (weniger offensichtliche) Hinweise auf Guids:
where id='xxx-xxx-xxxxx'
), aber Sie bekommen einige, die zurück über sequentielle guids (where id='xxx-xxx' + '123'
).'http://example.com?userid=xxxx'
und erwarten, um ein Ergebnis zu erhalten, die für jemand anderes Konto).InformationsquelleAutor der Antwort Joel Coehoorn
Jeff Atwood hat bereits beantwortet, alles in diesem umfassenden Beitrag.
InformationsquelleAutor der Antwort Peter J
Im Allgemeinen würde ich empfehlen eine
BIGINT
über eineGUID
(als guids sind groß und langsam), aber die Frage ist, glauben Sie noch brauchen? (I. e. machst du die Replikation?)Wenn Sie erwarten, dass weniger als 2 Milliarden Zeilen, die traditionelle
INT
wird in Ordnung sein.InformationsquelleAutor der Antwort Andrew Rollings
Machst du die Replikation oder haben Sie Verkäufe Leute, die laufen getrennt databses, die zusammengeführt werden müssen, verwenden Sie eine GUID. Ansonsten würde ich gehen für einen int oder bigint. Sie sind viel leichter zu behandeln in der langen run.
InformationsquelleAutor der Antwort HLGEM
Hängt nicht das, was Sie brauchen. DB Leistung gewinnen würden, integer, während die GUIDs sind nützlich für Replikation und nicht erfordern, zu hören, wieder von der DB, welche Identität erstellt wurde, d.h. der code könnte GUID erstellen Identität vor dem einfügen in die Reihe.
InformationsquelleAutor der Antwort dove
Wenn Sie ' re Planung über die Verwendung der merge-Replikation dann ein
ROWGUIDCOL
ist vorteilhaft für die Leistung (siehe hier für Infos). Ansonsten brauchen wir mehr info über das, was Ihre definition von 'besser' ist; es ist besser, für das, was?InformationsquelleAutor der Antwort Greg Beech
Es hängt wirklich davon ab, ob die ankommenden Daten irgendwie fortlaufend. Ich empfehle für solche Dinge wie Benutzer, die eine GUID besser sein könnte. Aber für sequentielle Daten, wie Aufträge oder andere Dinge, die müssen einfach sortierbar, die eine bigint-kann gut sein, eine bessere Lösung als es indiziert werden und sorgen für eine schnelle Sortierung, ohne die Kosten von einem anderen index.
InformationsquelleAutor der Antwort Chris J
Es wirklich hängt davon ab, ob Sie erwarten, dass die Replikation in der Bild. Replikation erfordert eine Reihe UUID, also, wenn Sie planen das können Sie auch machen es vor.
InformationsquelleAutor der Antwort Jeffrey Hantin
Es sei denn, Sie haben einen echten Bedarf für eine GUID, wie zum Beispiel die Erzeugung von Schlüsseln überall und nicht nur auf dem server, dann würde ich stick mit die Verwendung von INTEGER basierten Schlüsseln. GUIDs sind teuer zu erstellen und machen es schwieriger, um tatsächlich die Daten anschauen. Plus, haben Sie jemals versucht, geben Sie eine GUID, die in einer SQL-Abfrage? Es ist schmerzhaft!
InformationsquelleAutor der Antwort Paul Lefebvre
Ich bin mit Andrew Kugellager.
Nun könnte man argumentieren, Raum Effizienz. Ein int ist, was 8 bytes max? Eine guid wird viel länger.
Aber ich habe zwei wichtigsten Gründe für die Präferenz: der Lesbarkeit und der Zugriffszeit. Zahlen sind für mich leichter als GUIDs (da kann ich immer den nächsten/vorherigen Datensatz leicht).
Als für access-time, beachten Sie, dass einige DBs beginnen können, haben GROßE Probleme mit den GUIDs. Ich weiß, dies ist der Fall mit MySQL (MySQL InnoDB Primary Key-Wahl: GUID/UUID vs Integer Einfügen Leistung). Dies kann nicht viel von einem problem mit SQL-Server, aber es etwas ist aufpassen.
Würde ich sagen, stick mit INT oder BIGINT. Das einzige mal, ich würde denken, Sie würde wollen, dass die GUID ist, wenn Sie gehen, um Ihnen aus und wollen nicht, dass Menschen in der Lage sein, zu erraten, die IDs von anderen Datensätzen aus Gründen der Sicherheit.
InformationsquelleAutor der Antwort MBCook
Gibt es nur wenige weitere Aspekte oder Anforderungen verwenden GUID.
InformationsquelleAutor der Antwort Arif