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.