I utformingen av databasen bruker vi ofte guid eller int som hovednøkkel, og ifølge kunnskapen vi har lært, har vi alltid følt at int er mer effektivt som hovednøkkel, men det er umulig uten nøye testing
Forklar grunnen. Det skjedde at under optimaliseringen av databasen i dag, støtte jeg på dette problemet, så jeg gjorde en test.
Testmiljø:
Stasjonær PC Pentiun(R) 4 CPU 3,06GHz Win XP profesjonell 1,5G DDR RAM SQL Server 2005 Personal
Testprosess:
Først, lag en testdatabase, Test
Testresultatene er som følger:
Som nevnt ovenfor er effektiviteten ved å bruke int som primærnøkkel forbedret sammenlignet med å bruke guid som hovednøkkel, spesielt når det er en tilkoblingsspørring og sletting av poster.
Dessuten, i dataspørringen med hovednøkkelen i GUID i dag, oppstod spørringstidsavbruddet gjentatte ganger på grunn av innfelling av flere underspørringsresultater. Derfor er jeg for å bruke int som hovednøkkel, og jeg er ikke enig i guid som hovednøkkel. De ovennevnte synspunktene representerer personlige meninger, og alle er velkomne til å uttrykke sine meninger og forklare fordeler og ulemper med guid og int som hovednøkkelen.
Oppfølgingstester:
Etter å ha blitt minnet på det av brødrene, har en ikke-klynget indeks blitt lagt til to undertabeller i dag:
OPPRETT IKKE-KLYNGET INDEKS Index_Detail_Guid på Test_Guid_Detail(Guid) OPPRETT IKKE-KLYNGET INDEKS Index_Detail_id på Test_Int_Detail(id) Deretter gjennomførte jeg en intern tilkoblingsundersøkelse og fant ut at, som @Xu Shaoxia sa, er effektiviteten faktisk ikke åpenbar nok til å indikere mer enn 50 %, og i praksis bare rundt 23 % forbedring, noe som fortsatt er akseptabelt.
Derfor anbefales det
1. I systemer som ofte trenger datamigrering, anbefales det å bruke Guid. Og å legge til ikke-klyngede indekser til de tilsvarende fremmednøkkelfeltene, det vil si felt brukt til join-spørringer, er til stor fordel for å forbedre ytelsen. Feltet til where-betingelsen kan også legges til etter behov for ikke-klyngede indekser.
2. Når du bruker Guid-typen som primærnøkkel, bør datatypen være uniqueidentifier, og husk å huske å avbryte den "aggregerte indeksen" til primærnøkkelen
3. For systemer som ikke trenger å migreres, eller små systemer, er det fortsatt svært praktisk å bruke int som primærnøkkel, og det er fortsatt en viss forbedring i effektivitet.
|