UUID
returnerer en universelt unikt id
(forhåbentlig også unik, hvis den også importeres til en anden DB).
For at citere fra MySQL doc (min fremhævelse):
På den anden side en simpel INT primær id-nøgle (f.eks. AUTO_INCREMENT ) returnerer et unikt heltal for den specifikke DB- og DB-tabel, men som ikke er universelt unik (så hvis det importeres til en anden DB, er der chancer for, at der vil være primære nøglekonflikter).
Med hensyn til ydeevne burde der ikke være nogen mærkbar forskel ved at bruge auto-increment over UUID . De fleste indlæg (inklusive nogle af forfatterne af dette websted), står som sådan. Selvfølgelig UUID kan tage lidt mere tid (og plads), men dette er ikke en præstationsflaskehals for de fleste (hvis ikke alle) tilfælde. At have en kolonne som Primary Key bør gøre begge valg lig med hensyn til ydeevne. Se referencer nedenfor:
- Til
UUIDeller ej tilUUID? - Myter,
GUIDvsAutoincrement - Ydeevne:
UUIDvsauto-incrementi cakephp-mysql UUIDydeevne i MySQL?- Primære nøgler:
IDs kontraGUIDs (kodningsrædsel)
(UUID vs auto-increment præstationsresultater, tilpasset fra Myths, GUID vs Autoincrement
)

UUID fordele / ulemper (tilpasset fra Primære nøgler:ID s kontra GUID s
)
Bemærk
Jeg ville læse de nævnte referencer omhyggeligt og beslutte, om jeg ville bruge UUID eller ikke afhængigt af min brugssituation. Når det er sagt, i mange tilfælde UUID s ville faktisk være at foretrække. For eksempel kan man generere UUID s uden at bruge/få adgang til databasen overhovedet, eller endda bruge UUID s, der er blevet forudberegnet og/eller gemt et andet sted. Derudover kan du nemt generalisere/opdatere dit databaseskema og/eller klyngeskema uden at skulle bekymre dig om ID s bryde og forårsage konflikter.
Med hensyn til mulige kollisioner, for eksempel ved brug af v4 UUIDS (tilfældig), sandsynligheden for at finde en duplikat inden for 103 billioner version-4 UUID'er er én ud af en milliard.