Datu bāzes izstrādē mēs bieži izmantojam guid vai int kā galveno atslēgu, un saskaņā ar apgūtajām zināšanām mēs vienmēr esam uzskatījuši, ka int ir efektīvāks kā galvenā atslēga, bet tas nav iespējams bez rūpīgas testēšanas
Paskaidrojiet iemeslu. Tā notika, ka datu bāzes optimizācijas laikā šodien es saskāros ar šo problēmu, tāpēc es veicu testu.
Testa vide:
Galddators Pentiun(R) 4 CPU 3.06GHz Uzvarēt XP profesionāli 1,5 G DDR OPERATĪVĀ ATMIŅA SQL Server 2005 individuālai lietošanai
Testēšanas process:
Vispirms izveidojiet testa datu bāzi, pārbaudiet
Testa rezultāti ir šādi:
Kā minēts iepriekš, int kā primārās atslēgas izmantošanas efektivitāte ir uzlabota, salīdzinot ar guid kā galvenās atslēgas izmantošanu, it īpaši, ja ir savienojuma vaicājums un ierakstu dzēšana.
Turklāt datu vaicājumā ar galveno atslēgu GUID šodien vaicājuma taimauts atkārtoti notika vairāku apakšvaicājumu rezultātu ligzdošanas dēļ. Tāpēc es esmu par int izmantošanu kā galveno taustiņu, un es nepiekrītu guid kā galvenajam taustiņam. Iepriekš minētie viedokļi atspoguļo personīgos viedokļus, un ikviens ir laipni aicināts izteikt savu viedokli un izskaidrot guid un int kā galvenās atslēgas priekšrocības un trūkumus.
Turpmākie testi:
Pēc brāļu atgādinājuma šodien divām apakštabulām ir pievienots nesagrupēts indekss:
NEGRUPĒTA INDEKSA Index_Detail_Guid IZVEIDE Test_Guid_Detail(GUID) NEGRUPĒTA INDEKSA Index_Detail_id IZVEIDE Test_Int_Detail(id) Tad es veicu iekšējā savienojuma vaicājumu un atklāju, ka, kā teica @Xu Shaoxia, efektivitāte patiešām nav pietiekami acīmredzama, lai norādītu vairāk nekā 50% un būtībā tikai aptuveni 23% uzlabojumu, kas joprojām ir pieņemams.
Tāpēc ieteicams
1. Sistēmās, kurās bieži ir jāveic datu migrācija, ieteicams izmantot Guid. Un nesagrupētu indeksu pievienošana atbilstošajiem ārējās atslēgas laukiem, tas ir, laukiem, kas tiek izmantoti savienojuma vaicājumiem, ir ļoti noderīga, lai uzlabotu veiktspēju. Nosacījuma where lauku var pievienot arī negrupētiem indeksiem.
2. Izmantojot Guid tipu kā primāro atslēgu, datu tipam jābūt uniqueidentifier, un noteikti atcerieties atcelt primārās atslēgas "apkopoto indeksu"
3. Sistēmām, kuras nav jāmigrē, vai mazām sistēmām joprojām ir ļoti ērti izmantot int kā primāro atslēgu, un joprojām ir zināms efektivitātes uzlabojums.
|