Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 17091|Atsakyti: 3

[Šaltinis] Naudokite guid kaip pirminį raktą ir int kaip pirminio rakto našumo palyginimą

[Kopijuoti nuorodą]
Paskelbta 2019-10-09 16:48:35 | | | |
Kurdami duomenų bazę dažnai naudojame guid arba int kaip pagrindinį raktą, o pagal įgytas žinias visada jautėme, kad int yra efektyvesnis kaip pagrindinis raktas, tačiau tai neįmanoma be kruopštaus bandymo

Paaiškinkite priežastį. Taip atsitiko, kad šiandien optimizuodamas duomenų bazę susidūriau su šia problema, todėl atlikau testą.

Bandymo aplinka:

Stalinis kompiuteris Pentiun(R) 4 CPU 3.06GHz
Laimėkite XP profesionalus
1,5 G DDR RAM
SQL Server 2005 asmeninis  


Testavimo procesas:

Pirmiausia sukurkite bandomąją duomenų bazę,

Bandymo rezultatai yra tokie:



Kaip minėta aukščiau, int kaip pirminio rakto naudojimo efektyvumas yra geresnis, palyginti su guid kaip pagrindiniu raktu, ypač kai yra ryšio užklausa ir ištrinami įrašai.

Be to, duomenų užklausoje su pagrindiniu raktu GUID šiandien užklausos skirtasis laikas pakartotinai įvyko dėl kelių antrinės užklausos rezultatų įdėjimo. Todėl aš esu už int naudojimą kaip pagrindinį raktą ir nesutinku su guid kaip pagrindiniu raktu.
Aukščiau pateiktos nuomonės atspindi asmeninę nuomonę, ir kiekvienas yra kviečiamas išreikšti savo nuomonę ir paaiškinti guid ir int kaip pagrindinio rakto privalumus ir trūkumus.

Tolesni tyrimai:


Po to, kai broliai priminė, šiandien prie dviejų sublentelių buvo pridėtas nesugrupuotas indeksas:

KURTI NESUGRUPUOTĄ INDEKSO Index_Detail_Guid Test_Guid_Detail(Guid)
NEGRUPUOTOS INDEKSO Index_Detail_id KŪRIMAS Test_Int_Detail(id)
Tada atlikau vidinio ryšio užklausą ir nustatiau, kad, kaip sakė @Xu Shaoxia, efektyvumas iš tiesų nėra pakankamai akivaizdus, kad parodytų daugiau nei 50%, o iš esmės tik apie 23% pagerėjimą, kuris vis dar yra priimtinas.

Todėl rekomenduojama

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 nepamirškite atšaukti pirminio rakto "agreguoto indekso"

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.





Ankstesnis:A182 Wu Xiaobo "2019 m. nauja viduriniosios klasės baltoji knyga"
Kitą:Naujausių "Fan Deng" skaitymo klubo išteklių rinkinys
 Savininkas| Paskelbta 2021-02-08 11:03:12 |
Bandymo
 Savininkas| Paskelbta 2021-02-08 11:03:31 |

Paskelbta 2025-03-20 16:13:51 |
int pirminio rakto perkėlimas nėra didelė problema, jei int pirminis raktas laikinai atšaukiamas perkėlimo metu, o po perkėlimo atidarykite savaiminį prieaugį
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com