Eisen: Tijdens een recent interview werd mij gevraagd wat het verschil is tussen SQL Server database int en guid als hoofdsleutel.Beide hebben voor- en nadelen, weeg ze alsjeblieft af op basis van je werkelijke zakelijke scenario's。
Oorspronkelijke tekst 1:De hyperlink-login is zichtbaar.
Voordelen van het gebruik van INT als primaire sleutel:
1. Het vereist een kleine opslagruimte, slechts 4 bytes.
2. De prestaties van het gebruik van INT voor insert- en update-operaties zijn beter dan die van GUID, dus het gebruik van int zal de prestaties van de applicatie verbeteren.
3. Index- en Join-operaties, int heeft de beste prestaties.
4. Makkelijk te onthouden.
5. Ondersteuning om de laatste waarde te verkrijgen via een functie, zoals: Scope_Indentity().
Nadelen van het gebruik van INT als primaire sleutel
1. Als er vaak tabellen samengevoegd worden, kan er duplicatie van primaire sleutels zijn.
2. Er zijn beperkingen op de reikwijdte van het gebruik van INT-gegevens. Als er een grote hoeveelheid data is, kan deze het INT-waardebereik overschrijden.
3. Het is moeilijk om gedistribueerde opgeslagen datatabellen te verwerken.
Voordelen van het gebruik van GUID als primaire sleutel:
1. Het is uniek.
2. Er zijn weinig mogelijkheden voor duplicatie.
3. Het is geschikt voor invoeg- en updateoperaties in een grote hoeveelheid data.
4. Het samenvoegen van data tussen servers is erg handig.
Nadelen van het gebruik van GUID als primaire sleutel:
1. De opslagruimte is groot (16 byte), dus neemt deze meer schijfgrootte in.
2. Het is moeilijk te onthouden. De prestaties van de join-operatie zijn lager dan die van int.
3. Er is geen ingebouwde functie om de laatst gegenereerde primaire GUID-sleutel te verkrijgen.
4. De GUID als primaire sleutel wordt toegevoegd aan andere indexen in de tabel, waardoor de prestaties worden verminderd.
Samenvatting:
Bovenstaande vermeldt de voor- en nadelen van GUID- en INT-datatypes als primaire sleutels. Ik denk dat het voor grote datavolumes wordt aanbevolen om guid als primaire sleutel te gebruiken. terwijlMet int krijg je de beste prestaties。
Opmerking: GebruikDe prestaties van geordende GUID verbeteren enorm。
Oorspronkelijke tekst twee:De hyperlink-login is zichtbaar.
Identiteit is een heel type type, decimaal zonder decimale definitie, bigint is acceptabel
De guid is vast binair(16), wat 16 bytes is
identiteit wordt verhoogd (of afgetrokken), en GUID is willekeurig, dus wanneer data wordt ingevoegd,De eerste zal geen fragmenten produceren, terwijl de tweede dat wel doet, en omdat de tweede uit de volgorde is, moet de volgorde worden aangepast bij het invoegen, waardoor de eerste over het algemeen beter is dan de tweede qua prestaties.
Een grote hoeveelheid informatie wordt meestal verdeeld in tabellen, waardoor identiteit in veel gevallen nog geschikter is
Wat betreft de betekenis van de primaire sleutel, hangt dit af van hoe je het beschouwt bij het ontwerpen; voor de gegevensverwerking zelf hoeft de primaire sleutel niet betekenisvol te zijn, en als je wilt dat de primaire sleutel zakelijke betekenis bevat, dan is de identiteitsprimaire sleutel natuurlijk betekenisloos, maar over het algemeen is het beter om de zakelijke betekenis en gegevensverwerking te scheiden, het bedrijf verandert voortdurend, als je de betekenis wilt brengen naar de hoofdsleutel van het tabelontwerp, verandert het bedrijf, en moet je de tabelstructuur meer aanpassen.
Oorspronkelijke tekst drie:De hyperlink-login is zichtbaar.
1. In systemen die vaak datamigratie nodig hebben, wordt aanbevolen Guid te gebruiken. En het toevoegen van niet-geclusterde indexen aan de bijbehorende vreemde sleutelvelden, dat wil zeggen velden die worden gebruikt voor join-query's, is van groot voordeel om de prestaties te verbeteren. Het veld van de where-voorwaarde kan ook worden toegevoegd voor niet-geclusterde indexen.
2. Bij het gebruik van het Guid-type als primaire sleutel moet het datatype uniqueidentifier zijn en moet je het onthoudenAnnuleer de primaire sleutel "Geaggregeerde indexen”
3. Voor systemen die niet hoeven te worden gemigreerd, of voor kleine systemen, is het nog steeds erg handig om int als primaire sleutel te gebruiken, en is er nog steeds een zekere verbetering in efficiëntie.
(Einde)
|