Krav: Under en nylig samtale blev jeg spurgt, hvad forskellen er mellem SQL Server database int og guid som hovednøgle.Begge har fordele og ulemper, så vej dem venligst ud fra dine faktiske forretningsscenarier。
Originaltekst 1:Hyperlink-login er synlig.
Fordele ved at bruge INT som primærnøgle:
1. Det kræver et lille datalagringsområde, kun 4 bytes.
2. Ydelsen ved brug af INT til insert- og opdateringsoperationer er bedre end ved GUID, så brug af int vil forbedre applikationens ydeevne.
3. Indeks- og Join-operationer, int har den bedste ydeevne.
4. Let at huske.
5. Understøttelse af at opnå den seneste værdi gennem en funktion, såsom: Scope_Indentity().
Ulemper ved at bruge INT som primærnøgle
1. Hvis der ofte forekommer en sammenfletting af tabeller, kan der forekomme duplikering af primærnøgler.
2. Der er begrænsninger på omfanget af brugen af INT-data. Hvis der er en stor mængde data, kan det overskride INT-værdiområdet.
3. Det er vanskeligt at behandle distribuerede lagrede datatabeller.
Fordele ved at bruge GUID som primær nøgle:
1. Den er unik.
2. Der er få muligheder for duplikation.
3. Den er egnet til indsættelses- og opdateringsoperationer i store mængder data.
4. Tværserver-datasammenfælling er meget bekvemt.
Ulemper ved at bruge GUID som primærnøgle:
1. Lagerpladsen er stor (16 byte), så den vil optage mere diskstørrelse.
2. Det er svært at huske. Ydelsen af join-operationen er lavere end for int.
3. Der er ingen indbygget funktion til at hente den senest genererede GUID-primærnøgle.
4. GUID som primærnøgle vil blive tilføjet til andre indekser i tabellen, hvilket vil reducere ydeevnen.
Resumé:
Ovenstående oplister fordele og ulemper ved GUID- og INT-datatyper som primærnøgler. Jeg tror, det anbefales at bruge guide som primær nøgle for store datamængder. hvorimodBrug af int vil give dig den bedste ydeevne。
Kommentar: BrugOrdered GUID-ydelsen forbedres meget。
Original tekst to:Hyperlink-login er synlig.
Identitet er en heltypetype, decimal uden decimaldefinition, bigint er acceptabelt
Guiden er fast binær(16), som er 16 bytes
identitet øges (eller subtraheres), og guid er tilfældig, så når data indsættes,Den førstnævnte vil ikke producere fragmenter, mens den sidstnævnte vil, og fordi den sidstnævnte er ude af rækkefølge, skal rækkefølgen justeres, når den indsættes, så den første generelt er bedre end den sidstnævnte med hensyn til ydeevne.
En stor mængde information er normalt opdelt i tabeller, så identitet er stadig mere egnet i mange tilfælde
Hvad angår betydningen af primærnøglen, afhænger det af, hvordan du tænker på den, når du designer; for selve databehandlingen behøver primærnøglen ikke at være meningsfuld, og hvis du kræver, at primærnøglen indeholder forretningsbetydning, så er identitetsprimærnøglen selvfølgelig meningsløs, men generelt er det bedre at adskille forretningsbetydningen og databehandlingen, forretningen ændrer sig hele tiden, hvis du vil bringe betydningen til hovednøglen i tabeldesignet, så ændrer forretningen sig, og du bliver nødt til at justere tabelstrukturen mere.
Originaltekst tre:Hyperlink-login er synlig.
1. I systemer, der ofte har brug for datamigrering, anbefales det at bruge Guid. Og at tilføje ikke-klyngede indekser til de tilsvarende fremmednøglefelter, altså felter brugt til join-forespørgsler, er en stor fordel for at forbedre ydeevnen. Feltet for where-betingelsen kan også tilføjes efter behov for ikke-klyngede indeks.
2. Når man bruger Guid-typen som primærnøgle, bør datatypen være uniqueidentifier og huske denAnnuller primærnøglens "Samlede indeks”
3. For systemer, der ikke behøver at migreres, eller små systemer, er det stadig meget praktisk at bruge int som primær nøgle, og der er stadig en vis forbedring i effektiviteten.
(Slut)
|