Reikalavimai: Neseniai vykusio interviu metu manęs paklausė, kuo skiriasi SQL serverio duomenų bazė int ir guid kaip pagrindinis raktas.Abu turi privalumų ir trūkumų, pasverkite juos pagal savo faktinius verslo scenarijus。
Originalus tekstas 1:Hipersaito prisijungimas matomas.
INT kaip pirminio rakto naudojimo privalumai:
1. Tam reikia nedidelės duomenų saugyklos vietos, tik 4 baitai.
2. INT naudojimo įterpimo ir naujinimo operacijoms našumas yra geresnis nei GUID, todėl naudojant int pagerės programos našumas.
3. Indeksuoti ir sujungti operacijas, int turi geriausią našumą.
4. Lengva įsiminti.
5. Palaikymas, norint gauti naujausią reikšmę naudojant funkciją, pvz.: Scope_Indentity().
INT kaip pirminio rakto naudojimo trūkumai
1. Jei dažnai sujungiamos lentelės, gali būti dubliuojami pirminiai raktai.
2. INT duomenų naudojimo apimtis yra ribojama. Jei yra didelis duomenų kiekis, jis gali viršyti INT reikšmių diapazoną.
3. Sunku apdoroti paskirstytas saugomų duomenų lenteles.
GUID kaip pirminio rakto naudojimo privalumai:
1. Tai unikalu.
2. Yra mažai galimybių dubliuotis.
3. Jis tinka įterpti ir atnaujinti operacijas dideliame duomenų kiekyje.
4. Kelių serverių duomenų sujungimas yra labai patogus.
GUID kaip pirminio rakto naudojimo trūkumai:
1. Saugyklos vieta yra didelė (16 baitų), todėl ji užims daugiau disko dydžio.
2. Sunku prisiminti. Sujungimo operacijos našumas yra mažesnis nei int.
3. Nėra įtaisytosios funkcijos, leidžiančios gauti naujausią sugeneruotą GUID pirminį raktą.
4. GUID kaip pirminis raktas bus įtrauktas į kitus lentelės indeksus, todėl sumažės našumas.
Suvestinė:
Aukščiau išvardyti GUID ir INT duomenų tipų, kaip pirminių raktų, privalumai ir trūkumai. Manau, kad dideliems duomenų kiekiams rekomenduojama naudoti guid kaip pirminį raktą. KadangiNaudojant int duos jums geriausią našumą。
Komentaras: NaudojimasUžsakytas GUID našumas labai pagerėja。
Originalus tekstas du:Hipersaito prisijungimas matomas.
tapatybė yra viso tipo tipas, dešimtainis be dešimtainio apibrėžimo, bigint yra priimtinas
GUID yra fiksuotas dvejetainis [16], kuris yra 16 baitų
tapatybė didinama (arba atimama), o GUID yra atsitiktinis, taigi įterpiant duomenis,Pirmasis nesukurs jokių fragmentų, o antrasis – dėl to, kad antrasis yra netinkamas, įterpus tvarką reikia pakoreguoti, todėl pirmasis paprastai yra geresnis už antrąjį našumo požiūriu.
Didelis informacijos kiekis paprastai yra suskirstytas į lenteles, todėl tapatybė daugeliu atvejų vis tiek yra tinkamesnė
Kalbant apie pirminio rakto reikšmę, tai priklauso nuo to, kaip jį vertinate kurdami, pačiam duomenų apdorojimui pirminis raktas nebūtinai turi būti prasmingas, o jei jums reikia, kad pirminis raktas apimtų verslo prasmę, tada tapatybės pirminis raktas, žinoma, yra beprasmis, tačiau apskritai geriau atskirti verslo prasmę ir duomenų apdorojimą, verslas nuolat keičiasi, jei norite suteikti prasmę pagrindiniam lentelės dizaino raktui, tada verslas keičiasi, turėsite labiau pakoreguoti lentelės struktūrą.
Originalus tekstas trys:Hipersaito prisijungimas matomas.
1. Sistemose, kuriose dažnai reikia perkelti duomenis, rekomenduojama naudoti Guid. O nesugrupuotų indeksų pridėjimas prie atitinkamų išorinio rakto laukų, tai yra laukų, naudojamų sujungimo užklausoms, yra labai naudingas siekiant pagerinti našumą. Sąlygos where lauką taip pat galima įtraukti pagal poreikį nesugrupuotiems indeksams.
2. Naudojant Guid tipą kaip pirminį raktą, duomenų tipas turi būti uniqueidentifier ir būtinai jį atsimintiAtšaukti pirminio rakto "Suvestiniai indeksai”
3. Sistemoms, kurių nereikia perkelti, arba mažoms sistemoms vis tiek labai patogu naudoti int kaip pirminį raktą, ir vis dar yra tam tikras efektyvumo pagerėjimas.
(Pabaiga)
|