gpt4 book ai didi

MySQL固定长度和可变长度数据类型

转载 作者:IT王子 更新时间:2023-10-28 23:49:03 24 4
gpt4 key购买 nike

我正在优化数据库,但我对固定长度数据类型还不清楚。

据我所知,这些数据类型是固定长度:

  • CHAR(n)
  • 日期
  • 时间
  • 日期时间
  • TINYINT
  • SMALLINT
  • 中级
  • INT
  • float
  • 双人间

这些是可变长度:

  • 文字
  • VARCHAR
  • BLOB

如有错误请指正!

现在,我的问题是:这些数据类型是固定长度还是可变长度?

  • 时间戳
  • 枚举

谢谢。

最佳答案

您对某些数据类型不正确。

日期时间/时间戳

TIMESTAMPDATETIME 很相似,但是与DATETIME 相比,TIMESTAMP 只使用了一半的存储空间。然而,使用 TIMESTAMP 有明显的缺点,因此您应该查看官方文档以了解您需要哪一个。但大多数 DATETIME 将是更好的选择。

您不必担心此数据类型的固定/可变长度

数字

您可以通过设置长度来存储整数,即 int(20) 但就存储而言,它没有区别,因此没有意义。

TINYINT SMALL INT MEDIUMINT BIGINT

这些数据类型分别需要8、16、24、32、64位的存储空间。他们每个人都有不同的最大值和最小值。如果您确定您的值不会超过某个数字,您应该选择最小的 int 数据类型以节省空间并提高性能。您应该查阅官方文档以获取有关这些数字的更多信息。

FLOATDOUBLE 是近似计算,您不必指定精度。设置精度并插入超出规范的值,您的值将四舍五入到规范。再次查看官方文档。

可变字符

VARCHAR,如您所料,是可变长度的,但请记住,当您只需要 5 个字符时,不要指定类似 VARCHAR(100) 的内容,因为虽然存储在磁盘上时长度是可变的,但在使用 RAM 时它会占用您指定的长度,因此您将浪费宝贵的内存。

BLOB 和文本

BLOBTEXT 以特殊方式存储,具体取决于您使用的存储引擎。它们通常存储在“外部”区域。除非字符串非常 长,否则您应该避免使用它。此数据类型无法索引全长,也不受内存支持,因此不会被系统内存使用。当调用它时,将使用 MyISAM 存储引擎在磁盘上创建一个临时表,这会导致性能大幅下降。

枚举

这非常紧凑,您可以在创建表时为字段设置特定值。字符串是固定的,更改 ENUM 列需要 ALTER TABLE,因此您不必担心此列的固定/可变长度。

编辑:

我在官方文档中找到了一个页面,可以回答您所有的问题 Data Type Storage Requirements

关于MySQL固定长度和可变长度数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6815994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com