În proiectarea bazei de date, folosim adesea guid sau int ca cheie principală, iar conform cunoștințelor pe care le-am învățat, am simțit întotdeauna că int este mai eficient ca cheie principală, dar este imposibil fără testare atentă
Explică motivul. S-a întâmplat ca, în timpul optimizării bazei de date de astăzi, să am întâmpinat această problemă, așa că am făcut un test.
Mediul de testare:
PC desktop Pentiun(R) 4 CPU 3.06GHz Win XP profesionist 1,5G DDR RAM SQL Server 2005 Personal
Procesul de testare:
Mai întâi, creează o bază de date de testare, Test
Rezultatele testelor sunt următoarele:
După cum s-a menționat mai sus, eficiența utilizării int ca cheie primară este îmbunătățită comparativ cu utilizarea guid ca cheie principală, mai ales când există o interogare de conexiune și ștergerea înregistrărilor.
Mai mult, în interogarea de date cu cheia principală din GUID de astăzi, timeout-ul interogării a apărut repetat din cauza cuibării mai multor rezultate sub-interogări. Prin urmare, sunt în favoarea folosirii lui int ca cheie principală și nu sunt de acord cu guid ca cheie principală. Opiniile de mai sus reprezintă opinii personale, iar oricine este binevenit să-și exprime opiniile și să explice avantajele și dezavantajele ghidului și intelecției ca elemente principale.
Teste de urmărire:
După ce frații li le-au reamintit, astăzi a fost adăugat un index negrupat în două subtabele:
CREEAZĂ Index_Detail_Guid DE INDEX NECLUSTERAT PE Test_Guid_Detail(GHID) CREEAZĂ Index_Detail_id INDEXAȚI NECLUSTERAȚI PE Test_Int_Detail(ID) Apoi am făcut o interogare internă a conexiunii și am descoperit că, așa cum a spus @Xu Shaoxia, eficiența nu este suficient de evidentă pentru a indica mai mult de 50%, ci practic doar o îmbunătățire de aproximativ 23%, ceea ce este totuși acceptabil.
Prin urmare, este recomandat
1. În sistemele care necesită adesea migrarea datelor, se recomandă utilizarea Guid. Iar adăugarea unor indici neclusterați în câmpurile corespunzătoare de chei străine, adică câmpurile folosite pentru interogări de join, este de mare ajutor pentru îmbunătățirea performanței. Câmpul condiției unde poate fi adăugat, după caz, pentru indicii negrupați.
2. Când se folosește tipul Guid ca cheie primară, tipul de date ar trebui să fie unic identificator și să nu uitați să anulați "indexul agregat" al cheii primare
3. Pentru sistemele care nu trebuie migrate sau cele mici, este totuși foarte convenabil să folosești int ca cheie principală și există totuși o anumită îmbunătățire a eficienței.
|