mysql中的3字节数字的含义(MEDIUMINT)

时间:2009-07-21 04:58:18

标签: mysql types

Funny thing我发现了abount mysql。 MySQL有一个3字节的数字类型 - MEDIUMINT。它的范围从-8388608到8388607.我觉得很奇怪。选择数字类型的大小以获得更好的性能,我认为数据应该与机器字或双字对齐。如果我们需要一些数值范围的限制规则,它必须是相对于数据类型的外部。例如:

CREATE TABLE ... (
  id INT RANGE(0, 500) PRIMARY KEY
)

那么,有谁知道为什么3个字节?有什么理由吗?

3 个答案:

答案 0 :(得分:9)

原因是如果你有一个3字节范围内的数字,你不会通过使用4个字节存储它来浪费空间。

当你有200亿行时,这很重要。

答案 1 :(得分:2)

您提到的对齐问题主要适用于RAM中的数据。没有什么能迫使MySQL在处理它时使用3个字节来存储该类型。

尽管如此,这可能在使用磁盘缓存方面有一个小优势。

答案 2 :(得分:2)

我们经常使用tinyintsmallintmediumint作为非常显着的空间节省。请记住,它使您的索引更小。

当您有非常小的连接表时,此效果会被放大,例如:

id1 smallint unsigned not null,
id2 mediumint unsigned not null,
primary key (id1, id2)

然后你有数亿甚至数十亿的记录。