Nõuded: Hiljutisel intervjuul küsiti minult, mis on SQL Serveri andmebaasi int ja guid kui peamise võtme vahel.Mõlemal on omad plussid ja miinused, palun kaaluge neid vastavalt oma tegelikele äristsenaariumitele。
Originaaltekst 1:Hüperlingi sisselogimine on nähtav.
INT-i kasutamise eelised põhivõtmena:
1. See nõuab väikest andmesalvestusruumi, ainult 4 baiti.
2. INT kasutamise jõudlus sisestus- ja uuendusoperatsioonide jaoks on parem kui GUID-il, seega int kasutamine parandab rakenduse jõudlust.
3. Indekseerimise ja liitmise operatsioonid, intellekt on parima jõudlusega.
4. Lihtne meelde jätta.
5. Toetus viimase väärtuse saamiseks funktsiooni kaudu, näiteks: Scope_Indentity().
INT-i kasutamise puudused põhivõtmena
1. Kui tabeleid ühendatakse sageli, võib primaarvõtmete dubleerimine tekkida.
2. INT-andmete kasutamise ulatusele on piirangud. Kui andmemaht on suur, võib see ületada INT väärtuse vahemikku.
3. On keeruline töödelda hajutatud salvestatud andmetabeleid.
GUID-i kasutamise eelised peamise võtmena:
1. See on ainulaadne.
2. Dubleerimise võimalusi on vähe.
3. See sobib suure hulga andmete sisestamiseks ja uuendamiseks.
4. Serveritevaheline andmete ühendamine on väga mugav.
GUID-i kasutamise puudused peamise võtmena:
1. Salvestusruum on suur (16 baiti), seega võtab see rohkem ketta suurust.
2. On raske meeles pidada. Liitmisoperatsiooni jõudlus on madalam kui int.
3. Puudub sisseehitatud funktsioon viimaste genereeritud GUID-põhivõtmete saamiseks.
4. GUID kui peamine võti lisatakse teistele tabeli indeksitele, mis vähendab jõudlust.
Kokkuvõte:
Ülaltoodud loetletakse GUID ja INT andmetüüpide eelised ja puudused primaarvõtmetena. Arvan, et suurte andmemahtude puhul soovitatakse kasutada GUID-i peamise võtmena. kuiInt kasutamine annab sulle parima tulemuse。
Kommentaar: KasutaTellitud GUID jõudlus paraneb oluliselt。
Originaaltekst kaks:Hüperlingi sisselogimine on nähtav.
Identiteet on täistüüpi tüüp, kümnendsüsteem ilma kümnendkomadefinitsioonita, bigint on aktsepteeritav
Guid on fikseeritud binaar(16), mis on 16 baiti
identiteet suureneb (või lahutatakse) ning guid on juhuslik, nii et andmete lisamiselEsimene ei tekita fragmente, teine aga ning kuna viimane on vales järjekorras, tuleb järjekorda lisamisel kohandada, seega on esimene üldiselt jõudluse poolest parem kui teine.
Suur hulk infot jagatakse tavaliselt tabeliteks, seega on identiteet paljudel juhtudel siiski sobivam
Mis puudutab esmase võtme tähendust, siis see sõltub sellest, kuidas sa seda disainimisel arvestad; andmetöötluse puhul ei pea primaarvõti olema tähenduslik, ja kui peavõti peab sisaldama ärilist tähendust, siis identiteedi põhivõti on muidugi mõttetu, kuid üldiselt on parem eraldada äriline tähendus ja andmetöötlus, äri muutub pidevalt, kui tahad tuua tähenduse tabeli põhivõtmele, siis äri muutub ja pead tabeli struktuuri rohkem kohandama.
Originaaltekst kolm:Hüperlingi sisselogimine on nähtav.
1. Süsteemides, kus sageli on vaja andmete migreerimist, soovitatakse kasutada Guid-i. Ja mitteklasterdatud indeksite lisamine vastavatele võõrvõtmeväljadele, st liitumispäringute jaoks kasutatavatele väljadele, on jõudluse parandamiseks suur kasu. Tingimuse välja saab lisada ka vastavalt mitteklasterdatud indeksitele.
2. Kui kasutada Guid-tüüpi põhivõtmena, peaks andmetüüp olema unikaalne identifikator ja kindlasti meeles pidada sedaTühista esmased võtmed "Agregaatindeksid”
3. Süsteemide puhul, mida pole vaja migreerida või väikestes süsteemides, on endiselt väga mugav kasutada int-d esmase võtmena ning efektiivsuses on siiski teatav paranemine.
(Lõpp)
|