Krav: Under et nylig intervju ble jeg spurt hva forskjellen er mellom SQL Server database int og guid som hovednøkkel.Begge har fordeler og ulemper, vennligst vei dem ut fra dine faktiske forretningsscenarier。
Originaltekst 1:Innloggingen med hyperkoblingen er synlig.
Fordeler med å bruke INT som primærnøkkel:
1. Den krever et lite datalagringsområde, bare 4 byte.
2. Ytelsen ved bruk av INT for insert- og oppdateringsoperasjoner er bedre enn for GUID, så bruk av int vil forbedre ytelsen til applikasjonen.
3. Indeks- og sammenføyningsoperasjoner, int har best ytelse.
4. Lett å huske.
5. Støtte for å oppnå den nyeste verdien gjennom en funksjon, for eksempel: Scope_Indentity().
Ulemper ved å bruke INT som primærnøkkel
1. Hvis det ofte forekommer sammenslåing av tabeller, kan det forekomme duplisering av primærnøkler.
2. Det finnes begrensninger på omfanget av bruk av INT-data. Hvis det er store mengder data, kan det overskride INT-verdiområdet.
3. Det er vanskelig å behandle distribuerte lagrede datatabeller.
Fordeler med å bruke GUID som primærnøkkel:
1. Den er unik.
2. Det er få muligheter for duplisering.
3. Den egner seg for innsettings- og oppdateringsoperasjoner i store mengder data.
4. Sammenslåing av data på tvers av servere er svært praktisk.
Ulemper ved å bruke GUID som primærnøkkel:
1. Lagringsplassen er stor (16 byte), så den vil ta opp mer diskstørrelse.
2. Det er vanskelig å huske. Ytelsen til join-operasjonen er lavere enn for int.
3. Det finnes ingen innebygd funksjon for å hente den nyeste genererte GUID-primærnøkkelen.
4. GUID som primærnøkkel vil bli lagt til andre indekser i tabellen, noe som reduserer ytelsen.
Sammendrag:
Ovenstående lister opp fordeler og ulemper ved GUID- og INT-datatyper som primærnøkler. Jeg tror for store datavolumer anbefales det å bruke guid som primærnøkkel. mensÅ bruke int gir deg best ytelse。
Kommentar: BrukYtelsen med ordnet GUID forbedres mye。
Originaltekst to:Innloggingen med hyperkoblingen er synlig.
Identitet er en heltypetype, desimalt uten desimaldefinisjon, bigint er akseptabelt
Guiden er fast binær(16), som er 16 byte
identitet økes (eller trekkes fra), og guid er tilfeldig, så når data settes inn,Den førstnevnte vil ikke produsere noen fragmenter, mens den sistnevnte vil gjøre det, og fordi den sistnevnte er ute av rekkefølge, må rekkefølgen justeres når den settes inn, slik at den førstnevnte generelt er bedre enn den sistnevnte når det gjelder ytelse.
En stor mengde informasjon deles vanligvis inn i tabeller, så identitet er fortsatt mer egnet i mange tilfeller
Når det gjelder betydningen av primærnøkkelen, avhenger dette av hvordan du vurderer den når du designer; for selve databehandlingen trenger ikke primærnøkkelen å være meningsfull, og hvis du krever at primærnøkkelen inneholder forretningsbetydning, er identitetsprimærnøkkelen selvfølgelig meningsløs, men generelt sett er det bedre å skille forretningsbetydningen og databehandlingen, virksomheten endrer seg hele tiden, hvis du vil bringe meningen til hovednøkkelen i tabelldesignet, endrer virksomheten seg, og du må justere tabellstrukturen mer.
Originaltekst tre:Innloggingen med hyperkoblingen er synlig.
1. I systemer som ofte trenger datamigrering, anbefales det å bruke Guid. Og å legge til ikke-klyngede indekser til de tilsvarende fremmednøkkelfeltene, det vil si felt brukt til join-spørringer, er til stor fordel for å forbedre ytelsen. Feltet til where-betingelsen kan også legges til etter behov for ikke-klyngede indekser.
2. Når man bruker Guid-typen som primærnøkkel, bør datatypen være uniqueidentifier og huske denAvbryt primærnøklene "Aggregatindekser”
3. For systemer som ikke trenger å migreres, eller små systemer, er det fortsatt svært praktisk å bruke int som primærnøkkel, og det er fortsatt en viss forbedring i effektivitet.
(Slutt)
|