Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 17091|Svar: 3

[Kilde] Brug guid som primærnøgle og int som primær nøgle ydeevnesammenligning

[Kopier link]
Opslået på 09/10/2019 16.48.35 | | | |
I databasedesignet bruger vi ofte guid eller int som hovednøgle, og ifølge den viden, vi har lært, har vi altid følt, at int er mere effektivt som hovednøgle, men det er umuligt uden omhyggelig testning

Forklar årsagen. Det skete, at jeg under optimeringen af databasen i dag stødte på dette problem, så jeg lavede en test.

Testmiljø:

Stationær PC Pentiun(R) 4 CPU 3,06GHz
Win XP professionel
1,5G DDR RAM
SQL Server 2005 Personal  


Testproces:

Først, opret en testdatabase, Test

Testresultaterne er som følger:



Som nævnt ovenfor er effektiviteten ved at bruge int som primærnøgle forbedret sammenlignet med at bruge guid som hovednøgle, især når der er en forbindelsesforespørgsel og sletning af poster.

Desuden opstod forespørgselstimeout gentagne gange i dataforespørgslen med hovednøglen i GUID i dag, fordi flere underforespørgselsresultater blev indlejret. Derfor går jeg ind for at bruge int som hovednøgle, og jeg er ikke enig i, at guid er hovednøglen.
Ovenstående synspunkter repræsenterer personlige meninger, og alle er velkomne til at udtrykke deres meninger og forklare fordele og ulemper ved guid og int som hovednøglen.

Opfølgende tests:


Efter at være blevet mindet om det af brødrene, er et ikke-klynget indeks i dag blevet tilføjet til to undertabeller:

OPRET IKKE-KLYNGET INDEKS Index_Detail_Guid på Test_Guid_Detail(Guid)
OPRET IKKE-KLYNGET INDEKS Index_Detail_id på Test_Int_Detail(id)
Derefter lavede jeg en intern forbindelsesforespørgsel og fandt, at som @Xu Shaoxia sagde, er effektiviteten faktisk ikke tydelig nok til at indikere mere end 50%, og grundlæggende kun omkring 23% forbedring, hvilket stadig er acceptabelt.

Derfor anbefales det

1. I systemer, der ofte har brug for datamigrering, anbefales det at bruge Guid. Og at tilføje ikke-klyngede indekser til de tilsvarende fremmednøglefelter, altså felter brugt til join-forespørgsler, er en stor fordel for at forbedre ydeevnen. Feltet for where-betingelsen kan også tilføjes efter behov for ikke-klyngede indeks.

2. Når Guid-typen bruges som primærnøgle, bør datatypen være unikidentifikator, og husk at annullere "aggregatindekset" for primærnøglen

3. For systemer, der ikke behøver at migreres, eller små systemer, er det stadig meget praktisk at bruge int som primær nøgle, og der er stadig en vis forbedring i effektiviteten.





Tidligere:A182 Wu Xiaobo "2019 Nyt Middelklasse-hvidbog"
Næste:En samling af de nyeste ressourcer fra Fan Deng Læseklub
 Udlejer| Opslået på 08/02/2021 11.03.12 |
test
 Udlejer| Opslået på 08/02/2021 11.03.31 |

Opslået på 20/03/2025 16.13.51 |
Migration af int-primærnøgler er ikke et stort problem, så længe int-primærnøglen midlertidigt annulleres under migrationen, og derefter åbner selv-inkrementen efter migreringen
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com