Krav: Under en nyligen intervju blev jag tillfrågad vad skillnaden är mellan SQL Server database int och guid som huvudnyckel.Båda har för- och nackdelar, väg dem gärna utifrån dina faktiska affärsscenarier。
Originaltext 1:Inloggningen med hyperlänken är synlig.
Fördelar med att använda INT som primärnyckel:
1. Den kräver ett litet datalagringsutrymme, endast 4 byte.
2. Prestandan vid användning av INT för insert- och uppdateringsoperationer är bättre än för GUID, så användning av int förbättrar applikationens prestanda.
3. Index- och Join-operationer, int har bäst prestanda.
4. Lätt att komma ihåg.
5. Stöd för att erhålla det senaste värdet genom en funktion, såsom: Scope_Indentity().
Nackdelar med att använda INT som primärnyckel
1. Om det sker en frekvent operation med sammanslagning av tabeller kan det förekomma duplicering av primärnycklar.
2. Det finns begränsningar för användningen av INT-data. Om det finns en stor mängd data kan den överskrida INT-värdeintervallet.
3. Det är svårt att bearbeta distribuerade lagrade datatabeller.
Fördelar med att använda GUID som primärnyckel:
1. Den är unik.
2. Det finns få möjligheter till duplicering.
3. Den är lämplig för insättnings- och uppdateringsoperationer i stora mängder data.
4. Databassammanslagning över servrar är mycket bekvämt.
Nackdelar med att använda GUID som primärnyckel:
1. Lagringsutrymmet är stort (16 byte), så det tar upp mer diskstorlek.
2. Det är svårt att minnas. Prestandan för join-operationen är lägre än för int.
3. Det finns ingen inbyggd funktion för att hämta den senast genererade GUID-primärnyckeln.
4. GUID som primärnyckel läggs till andra index i tabellen, vilket minskar prestandan.
Sammanfattning:
Ovan listar för- och nackdelar med GUID- och INT-datatyper som primärnycklar. Jag tror att för stora datavolymer rekommenderas att använda guid som primärnyckel. medanAtt använda int ger dig bäst prestanda。
Kommentar: AnvändOrdered GUID-prestandan förbättras mycket。
Originaltext två:Inloggningen med hyperlänken är synlig.
identitet är en heltyp, decimal utan decimaldefinition, bigint är acceptabelt
Guiden är fast binär(16), vilket är 16 byte
identitet ökar (eller subtraheras), och guid är slumpmässig, så när data infogas,Den förstnämnda producerar inga fragment, medan den senare gör det, och eftersom den senare är ur ordning måste ordningen justeras när den sätts in, så den förstnämnda är generellt bättre än den senare vad gäller prestanda.
En stor mängd information delas vanligtvis upp i tabeller, så identitet är fortfarande mer lämplig i många fall
När det gäller betydelsen av primärnyckeln beror det på hur du tänker på den när du designar, för själva databehandlingen behöver primärnyckeln inte vara meningsfull, och om du kräver att primärnyckeln innehåller affärsbetydelse, så är identitetsprimärnyckeln förstås meningslös, men generellt sett är det bättre att separera affärsbetydelsen och databehandlingen, företaget förändras ständigt, om du vill föra in betydelsen i huvudnyckeln i tabelldesignen, då förändras affärsmässigt, du måste justera tabellstrukturen mer.
Originaltext tre:Inloggningen med hyperlänken är synlig.
1. I system som ofta behöver göra datamigrering rekommenderas att använda Guid. Och att lägga till icke-klustrade index till motsvarande främmande nyckelfält, det vill säga fält som används för join-frågor, är till stor nytta för att förbättra prestandan. Fältet för where-villkoret kan också läggas till vid behov för icke-klustrade index.
2. När du använder Guid-typen som primärnyckel bör datatypen vara uniqueidentifier och se till att komma ihåg denAvboka primärnyckelns "Aggregerade index”
3. För system som inte behöver migreras, eller små system, är det fortfarande mycket bekvämt att använda int som primärnyckel, och det finns fortfarande en viss förbättring i effektivitet.
(Slut)
|