sql >> Databáze >  >> RDS >> Sqlserver

numeric(38,0) jako sloupec primárního klíče; dobrý, špatný, koho to zajímá?

No, jste utrácet více dat za ukládání čísel, na která nikdy ve skutečnosti nedosáhnete.

bigint stoupá na 9 223 372 036 854 775 807 v 8 bytech

int se zvýší na 2 147 483 647 ve 4 bytech

NUMERIC(38,0) zabere, pokud to spočítám správně, 17 bajtů.

Není to velký rozdíl, ale:menší datové typy =více řádků v paměti (nebo méně stránek pro stejný počet řádků) =méně diskových I/O pro vyhledávání (buď indexované nebo vyhledávání datových stránek). Totéž platí pro replikaci, stránky protokolu atd.

Pro SQL Server:INT je standard IEEE, a proto je pro CPU snazší jej porovnávat, takže při použití INT vs. NUMERIC (což je komprimovaný desítkový formát) získáte mírné zvýšení výkonu. (Poznámka v Oracle, pokud se aktuální verze shoduje se staršími verzemi, na kterých jsem vyrůstal, VŠECHNY datové typy jsou zabaleny, takže INT uvnitř je v podstatě totéž jako NUMERIC( x,0 ), takže není žádný rozdíl ve výkonu)

Takže ve velkém schématu věcí - pokud máte hodně disku, RAM a náhradních I/O, použijte libovolný datový typ. Pokud chcete získat trochu vyšší výkon, buďte trochu konzervativnější.

Jinak bych to v tuto chvíli nechal tak, jak to je. Není třeba věci měnit.



  1. mysql dotaz - blogové příspěvky a komentáře s limitem

  2. Problém s připojením Ruby on rails

  3. Laravel OrderPodle počtu vztahu

  4. Jak získat minimální hodnotu ID a maximální hodnotu ID v tabulce MySQL