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

Desetinné VS Int v MySQL?

Může to záviset na verzi MySQL, kterou používáte. Viz zde .

Před MySQL 5.0.3 byl typ DECIMAL uložen jako řetězec a byl obvykle pomalejší. Od verze MySQL 5.0.3 je však typ DECIMAL uložen v binárním formátu, takže s velikostí vašeho DECIMAL výše nemusí být velký rozdíl ve výkonu.

Hlavním problémem s výkonem by bylo množství místa, které zabírají různé typy (přičemž DECIMAL je pomalejší). S MySQL 5.0.3+ to vypadá jako menší problém, ale pokud budete provádět numerické výpočty hodnot jako součást dotazu, může dojít k určitému rozdílu ve výkonu. To může stát za otestování, protože v dokumentaci není žádný náznak, že bych to viděl.

Upravit: S ohledem na int(10) unsigned , vzal jsem to v nominální hodnotě jen jako 4bajtový int. Toto má však maximální hodnotu 4294967295, což striktně neposkytuje stejný rozsah čísel jako DECIMAL(10,0) unsigned .

Jak zdůraznil @Unreason, budete muset použít bigint aby pokryl celý rozsah 10ciferných čísel, velikost se posunula až na 8 bajtů.

Častou chybou je, že při zadávání typů číselných sloupců v MySQL si lidé často myslí, že číslo v závorce má vliv na velikost čísla, které mohou uložit. To ne. Rozsah čísel je čistě založen na typu sloupce a na tom, zda je podepsaný nebo nepodepsaný. Číslo v závorce slouží pro účely zobrazení ve výsledcích a nemá žádný vliv na hodnoty uložené ve sloupci. Pokud nezadáte ZEROFILL, nebude to mít žádný vliv na zobrazení výsledků možnost také na sloupci.



  1. 4 způsoby, jak zkontrolovat, zda tabulka v MariaDB existuje

  2. Seznam funkcí data a času v SQL Server (T-SQL)

  3. Operand by měl obsahovat 1 sloupec – MySQL NENÍ IN

  4. psql - uložit výsledky příkazu do souboru