Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 3812|Antwoord: 2

[Bron] [Turn] (MSSQL) SQL Server-database-int en guid voor primaire sleutelvergelijking

[Link kopiëren]
Geplaatst op 06-06-2023 22:17:40 | | |
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 1De 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 tweeDe 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 drieDe 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)




Vorig:ASP.NET Core (20) Voorkom open omleidingsaanvallen
Volgend:.NET Core-programma meertalige lees- en schrijfbronbestanden (.resx)
 Huisbaas| Geplaatst op 06-06-2023 22:42:46 |
SequentialGuidValueGenerator genereert sequentiële Guid-waarden die geoptimaliseerd zijn voor gebruik met Microsoft SQL Server clustersleutels of indexen, wat resulteert in betere prestaties dan willekeurige waarden. Dit is de standaardgenerator die is ingesteld om SQL Server Guid-kolommen te genereren wanneer ze worden toegevoegd.

De hyperlink-login is zichtbaar.


Sequentiële GUID's in Entity Framework Core zijn mogelijk niet sequentieel

De hyperlink-login is zichtbaar.
 Huisbaas| Geplaatst op 27-01-2024 11:07:29 |
[MSSQL] SQL SERVER geordende GUID's en ongeordende GUID's als primaire sleutelaggregatie-indextests
https://www.itsvse.com/thread-10607-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com