sql >> Databáze >  >> RDS >> Mysql

výkonová penalizace řetězců jako primárních klíčů?

DB potřebuje udržovat B-strom (nebo podobná struktura) s klíčem tak, aby je bylo možné objednat.

Pokud je klíč zahašován a uložen do B-stromu, bylo by dobré rychle zkontrolovat jedinečnost klíče -- klíč lze stále efektivně vyhledávat. Nebyli byste však schopni efektivně hledat rozsah dat (např. pomocí LIKE ), protože B-Strom již není řazen podle hodnoty String.

Takže si myslím, že většina DB skutečně ukládá řetězec do B-stromu, který může (1) zabírat více místa než číselné hodnoty a (2) vyžadují, aby byl B-strom znovu vyvážen pokud jsou klíče vkládány v libovolném pořadí (bez představy o rostoucí hodnotě jako u číselného pk).

Trest v praxi se může pohybovat od nepatrných po obrovské. Vše závisí na použití, počtu řádků, průměrné velikosti řetězcového klíče, dotazech, které spojují tabulku atd.



  1. Mysql, přetvoř data z dlouhých / vysokých na široký

  2. Jak zaokrouhlit (nahoru/dolů) v SQL Server – 5 užitečných tipů

  3. Jak bezpečné je ověřování v protokolu mysql?

  4. MySQL DELETE FROM s poddotazem UNION podle podmínky IN