代码之家  ›  专栏  ›  技术社区  ›  Denis Bazhenov

mysql中3字节数字的意义(mediumnt)

  •  3
  • Denis Bazhenov  · 技术社区  · 16 年前

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

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

    那么,有人知道为什么是3字节吗?有什么理由吗?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Mehrdad Afshari    16 年前

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

        2
  •  9
  •   chaos    16 年前

    原因是,如果有一个数字在3字节的范围内,就不会因为使用4字节存储而浪费空间。

        3
  •  2
  •   gahooa    16 年前

    我们经常使用 tinyint smallint mediumint

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