Andmebaasi kujundamisel kasutame sageli peamise võtmena guidi või int-i ning meie teadmiste põhjal oleme alati tundnud, et int on peavõtmena tõhusam, kuid see on võimatu ilma hoolika testimiseta
Selgita põhjust. Juhtus nii, et täna sattusin andmebaasi optimeerimise käigus sellele probleemile, nii et tegin testi.
Testikeskkond:
Lauaarvuti Pentiun(R) 4 protsessor 3.06GHz Win XP professionaal 1,5G DDR RAM SQL Server 2005 Personal
Testimise protsess:
Esiteks, loo testandmebaas, Test
Testitulemused on järgmised:
Nagu eespool mainitud, on int-i kasutamise efektiivsus põhivõtmena parem võrreldes guid-i kasutamisega põhivõtmena, eriti kui on ühenduspäring ja kirjete kustutamine.
Veelgi enam, tänases GUID-i põhivõtmega andmepäringus korduvalt päringu aeg, kuna mitmed alampäringu tulemused olid pesastunud. Seetõttu pooldan int kasutamist peamise võtmega ja ma ei nõustu guid-ga kui peavõtmega. Ülaltoodud seisukohad esindavad isiklikke arvamusi ning igaüks on teretulnud oma arvamust avaldama ja selgitama juhise ja intellekti eeliseid ja puudusi kui peamise võtmeteguri.
Järeltestid:
Pärast vendade meeldetuletust on täna lisatud kahele alamtabelile mitte-klasterdatud indeks:
LOO MITTEKLASTERDATUD INDEKS Index_Detail_Guid Test_Guid_Detail(Guid) peal LOO MITTEKLASTERDATUD INDEKS Index_Detail_id Test_Int_Detail(id)-l Seejärel tegin sisemise ühenduse päringu ja leidsin, et nagu @Xu Shaoxia ütles, pole efektiivsus piisavalt ilmne, et näidata üle 50%, vaid põhimõtteliselt vaid umbes 23%, mis on endiselt aktsepteeritav.
Seetõttu on see soovitatav
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 ning kindlasti tuleb meeles pidada tühistada esmase võtme "koondindeks"
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.
|