Při návrhu databáze často používáme guid nebo int jako hlavní klíč a podle získaných znalostí jsme vždy cítili, že int je efektivnější jako hlavní klíč, ale bez pečlivého testování je to nemožné
Vysvětlete důvod. Stalo se, že jsem dnes při optimalizaci databáze narazil na tento problém, takže jsem provedl test.
Testovací prostředí:
Stolní počítač Pentiun(R) 4 CPU 3,06GHz Win XP professional 1,5G DDR RAM SQL Server 2005 Personal
Testovací proces:
Nejprve vytvořte testovací databázi, Testujte
Výsledky testu jsou následující:
Jak bylo zmíněno výše, efektivita použití int jako primárního klíče je lepší než použití guid jako hlavního klíče, zejména při dotazování na spojení a mazání záznamů.
Navíc v datovém dotazu s hlavním klíčem v GUID dnes došlo k časovému limitu dotazu opakovaně kvůli vnoření několika výsledků poddotazu. Proto jsem pro použití int jako hlavního klíče a nesouhlasím s guidem jako hlavním klíčem. Výše uvedené názory představují osobní názory a každý je vítán, aby je vyjádřil a vysvětlil výhody a nevýhody guid a int jako hlavních klíčů.
Následné testy:
Po připomenutí bratry byl dnes do dvou podtabulek přidán ne-shlukovaný index:
VYTVOŘTE Index_Detail_Guid NECLUSTEROVANÉHO INDEXU na Test_Guid_Detail(Guid) VYTVOŘTE NECLUSTEROVANÝ INDEX Index_Detail_id NA Test_Int_Detail(id) Pak jsem provedl interní dotaz na připojení a zjistil jsem, že jak řekl @Xu Shaoxia, efektivita není natolik zřejmá, aby ukázala více než 50 %, a v podstatě jen asi 23 % zlepšení, což je stále přijatelné.
Proto se doporučuje
1. V systémech, které často potřebují migraci dat, se doporučuje používat Guid. A přidání ne-clusterovaných indexů do odpovídajících polí cizího klíče, tedy polí používaných pro dotazy na spojování, je velkým přínosem pro zlepšení výkonu. Pole podmínky kde lze také přidat podle potřeby pro ne-shlukované indexy.
2. Při použití typu Guid jako primárního klíče by měl být datový typ uniqueidentifier a nezapomeňte zrušit "agregovaný index" primárního klíče
3. Pro systémy, které není třeba migrovat, nebo malé systémy, je stále velmi pohodlné používat int jako primární klíč a stále dochází k určitému zlepšení efektivity.
|