bit(8)vs tinyint

时间:2011-07-10 15:15:16

标签: mysql database

在存储引擎的眼中,bit(8)tinyint之间是否有任何差异?

bit(16) vs smallint

bit(24) vs mediumint

bit(32) vs int

我想知道的是,它们是同义词,而引擎会像对方一样对待它吗?

1 个答案:

答案 0 :(得分:1)

首先:我不知道在尝试进行查询时各个引擎如何处理位字段的内部结构。如果索引或查询这两种列类型会更快,我会很好奇。

从原始存储角度来看,这些是storage requirements for numeric types

  • TINYINT = 1个字节
  • SMALLINT = 2个字节
  • MEDIUMINT = 3个字节
  • INT,INTEGER = 4 bytes
  • BIGINT = 8个字节
  • FLOAT(p)= 4 如果0 <= p <= 24则为字节,如果为25则为8字节 &lt; = p&lt; = 53 FLOAT = 4字节
  • DOUBLE
    [PRECISION],REAL = 8字节
  • DECIMAL(M,D),NUMERIC(M,D)=变化; 见以下讨论
  • BIT(M)=
    大约(M + 7)/ 8字节

除非您使用NDBCluster存储引擎,每个存储记录需要4个字节。 (除非你有多个比特类型,它们将压缩成最小4字节)

编辑:

根据this page on numeric types tinyint(1),bit在版本5.0.3之前是myISAM的同义词,5.0.5是MEMORY,InnoDB,BDB和NDBCLUSTER的同义词。这意味着他们不再存在。