Pri oblikovanju baze podatkov pogosto uporabljamo guid ali int kot glavni ključ, in glede na pridobljeno znanje smo vedno menili, da je int bolj učinkovit kot glavni ključ, vendar je to nemogoče brez skrbnega testiranja
Pojasnite razlog. Danes sem med optimizacijo baze naletel na ta problem, zato sem opravil test.
Testno okolje:
Namizni računalnik Pentiun(R) s 4 procesorji 3,06 GHz Win XP professional 1,5G DDR RAM SQL Server 2005 Personal
Postopek testiranja:
Najprej ustvarite testno bazo podatkov, testirajte
Rezultati testa so naslednji:
Kot je bilo omenjeno zgoraj, je učinkovitost uporabe int kot primarnega ključa boljša v primerjavi z uporabo guid kot glavnega ključa, še posebej, kadar pride do poizvedbe o povezavi in brisanju zapisov.
Poleg tega se je v današnji podatkovni poizvedbi z glavnim ključem v GUID časovna omejitev poizvedbe večkrat pojavila zaradi gnezdenja več podrezultatov poizvedbe. Zato zagovarjam uporabo int kot glavnega ključa in se ne strinjam z guid kot glavnim ključem. Zgornja stališča predstavljajo osebna mnenja in vsak je vaben, da izrazi svoje mnenje ter pojasni prednosti in slabosti smernic in inteligence kot glavnega ključa.
Nadaljnji testi:
Po opomniku bratov je danes v dve podtabeli dodan ne-gručen indeks:
USTVARI NEGRUČEN INDEKSNI Index_Detail_Guid na Test_Guid_Detail(GID) USTVARITE NEGRUČEN INDEKSNI Index_Detail_id NA Test_Int_Detail(id) Nato sem izvedel interno poizvedbo o povezavi in ugotovil, da kot je rekel @Xu Shaoxia, učinkovitost res ni dovolj očitna, da bi pokazala več kot 50 %, in v bistvu le okoli 23 % izboljšave, kar je še vedno sprejemljivo.
Zato je priporočljivo
1. V sistemih, ki pogosto potrebujejo migracijo podatkov, je priporočljivo uporabiti Guid. Dodajanje negručenih indeksov ustreznim poljem tujih ključev, torej poljem, ki se uporabljajo za poizvedbe po združitvi, je zelo koristno za izboljšanje zmogljivosti. Polje pogoja kjer se lahko doda tudi po potrebi za negručene indekse.
2. Pri uporabi tipa Guid kot primarnega ključa naj bo podatkovni tip edinstveni identifikator in ne pozabite preklicati "agregatnega indeksa" primarnega ključa
3. Za sisteme, ki jih ni treba migrirati, ali za majhne sisteme je še vedno zelo priročno uporabljati int kot primarni ključ, poleg tega pa je še vedno opaziti določeno izboljšanje učinkovitosti.
|