database - 为什么在创建数据库表时需要这样特定的数据类型?

标签 database database-design

采用如下的建表语句:

create table fruit
{
  count int,
  name varchar(32),
  size float
}

为什么不用“string”、“number”、“boolean”或更好的数据类型,而不是那些特定的数据类型,根本不必指定任何数据类型。

拥有这些特定数据类型的技术原因是什么? (与通用或无数据类型相反)

最佳答案

想象一个表中有 2000 万行,有一个 int 列,其中所有数字都是 1 到 10。

如果为此使用 tinyint,它将占用 1 个字节。如果您使用常规 int,它将占用 4 个字节。这是磁盘空间量的四倍,60 MB 以上的磁盘空间

理论上,您可以设计一个数据库引擎来“智能配置”一个表,但想象一下我们的理论表,突然间数据库决定它需要为列中的数据分配更多字节。整个表将需要重新分页,并且在引擎重组表时,性能可能会降低数小时。 有太多的极端情况和出错的方法,与一开始就正确设计您的应用程序相比,掌握自动配置的工作量更大。

关于database - 为什么在创建数据库表时需要这样特定的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2104338/

相关文章:

MySQL,如何重组可选的多个外键

使用 .NET 删除数据库后 MySql 查询变慢

database - 如何正确设计数据库的这一部分(循环引用?)

database - 为 Netezza 数据库 (nzSQL) 配置 Django

database - 了解 Oracle 中的系统命名约定

sql - 从数据库中删除记录的替代方法?

sql-server - Uniqueidentifier vs. IDENTITY vs. Material Code——哪个是主键的最佳选择?

mysql - 从连接多行表的查询中返回单行

java - 数据库值重复错误

MySQL - 为每 X 行选择 1