Pri návrhu databázy často používame guid alebo int ako hlavný kľúč a podľa získaných poznatkov sme vždy cítili, že int je efektívnejší ako hlavný kľúč, ale bez dôkladného testovania je to nemožné
Vysvetlite dôvod. Stalo sa, že počas optimalizácie databázy som dnes narazil na tento problém, tak som urobil test.
Testovacie prostredie:
Stolný počítač Pentiun(R) 4 CPU 3,06GHz Win XP professional 1,5G DDR RAM SQL Server 2005 Personal
Proces testovania:
Najprv vytvorte testovaciu databázu, otestujte
Výsledky testov sú nasledovné:
Ako už bolo spomenuté, efektivita použitia int ako primárneho kľúča je lepšia v porovnaní s použitím guid ako hlavného kľúča, najmä pri dotaze na spojenie a mazaní záznamov.
Navyše, v dnešnom dátovom dotaze s hlavným kľúčom v GUID sa časový limit dotazu opakovane vyskytoval kvôli vnoreniu viacerých pod-dotazových výsledkov. Preto som za používanie int ako hlavného kľúča a nesúhlasím s guid ako hlavným kľúčom. Vyššie uvedené názory predstavujú osobné názory a každý je vítaný vyjadriť svoje názory a vysvetliť výhody a nevýhody guid a int ako hlavného kľúča.
Následné testy:
Po pripomenutí bratmi bol dnes do dvoch podtabuliek pridaný neklastrovaný index:
VYTVORIŤ NEKLASTROVANÝ INDEXOVÝ Index_Detail_Guid na Test_Guid_Detail(Guid) VYTVORIŤ NEKLASTROVANÝ INDEX Index_Detail_id NA Test_Int_Detail(id) Potom som vykonal interný dotaz na pripojenie a zistil som, že ako povedal @Xu Shaoxia, efektivita nie je dostatočne zrejmá na to, aby ukázala viac ako 50 %, a v podstate len asi 23 % zlepšenie, čo je stále prijateľné.
Preto sa odporúča
1. V systémoch, ktoré často potrebujú migráciu dát, sa odporúča používať Guid. A pridávanie ne-klastrovaných indexov k zodpovedajúcim cudzím kľúčovým poliam, teda poliam používaným na dotazy na spojovanie, je veľkým prínosom na zlepšenie výkonu. Pole podmienky where možno tiež pridať podľa potreby pre neklastrované indexy.
2. Pri použití typu Guid ako primárneho kľúča by mal byť dátový typ uniqueidentifier a nezabudnite zrušiť "agregovaný index" primárneho kľúča
3. Pre systémy, ktoré nie je potrebné migrovať, alebo malé systémy, je stále veľmi pohodlné použiť int ako primárny kľúč a stále dochádza k určitému zlepšeniu efektivity.
|