Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 17091|Svar: 3

[Källa] Använd guid som primärnyckel och int som jämförelse av primärnyckelns prestanda

[Kopiera länk]
Publicerad på 2019-10-09 16:48:35 | | | |
Vid databasens design använder vi ofta guid eller int som huvudnyckel, och enligt den kunskap vi har lärt oss har vi alltid känt att int är mer effektivt som huvudnyckel, men det är omöjligt utan noggranna testningar

Förklara anledningen. Det hände att under optimeringen av databasen idag stötte jag på detta problem, så jag gjorde ett test.

Testmiljö:

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


Testprocess:

Först, skapa en testdatabas, Testa

Testresultaten är följande:



Som nämnts ovan är effektiviteten med att använda int som primärnyckel förbättrad jämfört med att använda guid som huvudnyckel, särskilt när det finns en anslutningsfråga och att ta bort poster.

Dessutom inträffade frågetimeout upprepade gånger i datafrågan med huvudnyckeln i GUID idag på grund av att flera delfrågeresultat var inbäddade. Därför är jag för att använda int som huvudnyckel, och jag håller inte med guid som huvudnyckel.
Ovanstående åsikter representerar personliga åsikter, och alla är välkomna att uttrycka sina åsikter och förklara för- och nackdelarna med guid och int som huvudnyckel.

Uppföljningstester:


Efter att bröderna påmint dem har ett icke-klustrat index lagts till i två deltabeller idag:

SKAPA ICKE-KLUSTRADE INDEX Index_Detail_Guid på Test_Guid_Detail(Guid)
SKAPA ICKE-KLUSTRADE INDEX Index_Detail_id på Test_Int_Detail(id)
Sedan gjorde jag en intern anslutningssökning och fann att, som @Xu Shaoxia sa, är effektiviteten faktiskt inte tillräckligt uppenbar för att indikera mer än 50 %, och i princip bara cirka 23 % förbättring, vilket fortfarande är acceptabelt.

Därför rekommenderas det

1. I system som ofta behöver göra datamigrering rekommenderas att använda Guid. Och att lägga till icke-klustrade index till motsvarande främmande nyckelfält, det vill säga fält som används för join-frågor, är till stor nytta för att förbättra prestandan. Fältet för where-villkoret kan också läggas till vid behov för icke-klustrade index.

2. När du använder Guid-typen som primärnyckel bör datatypen vara uniqueidentifier, och kom ihåg att avbryta "aggregerad index" för primärnyckeln

3. För system som inte behöver migreras, eller små system, är det fortfarande mycket bekvämt att använda int som primärnyckel, och det finns fortfarande en viss förbättring i effektivitet.





Föregående:A182 Wu Xiaobo "2019 års nya medelklassvitbok"
Nästa:En samling av de senaste resurserna från Deng Reading Club
 Hyresvärd| Publicerad på 2021-02-08 11:03:12 |
test
 Hyresvärd| Publicerad på 2021-02-08 11:03:31 |

Publicerad på 2025-03-20 16:13:51 |
Migration av int-primärnyckeln är inget stort problem, så länge int-primärnyckeln tillfälligt avbryts under migreringen, och sedan öppnar självinkrementen efter migreringen
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com