我正在优化DB,对于固定长度的数据类型,我不太清楚。
据我所知,这些数据类型是固定长度。
这些是variable-length
,如果我错了,请纠正我!
现在,我的问题是:,这些数据类型是固定长度还是可变长度?。
谢谢。
发布于 2011-07-25 12:50:16
在某些数据类型上不正确。
DATETIME/TIMESTAMP
TIMESTAMP和DATETIME是相似的,但是与DATETIME相比,时间戳只占用了存储空间的一半。然而,使用TIMESTAMP有明显的缺点,因此您应该检查官方文档以确定您需要哪个文档。但大多数DATETIME都是更好的选择。
您不必担心此数据类型的修复/可变长度
数
您可以通过设置长度即int(20)来存储整数,但就存储而言,它没有差别,因此没有任何意义。
TINYINT SMALL INT MEDIUMINT BIGINT
这些数据类型分别需要8、16、24、32和64位的存储空间。它们中的每一个都有不同的最大值和最小值。如果您确信您的值不会超过某个数字,则应选择最小的int数据类型,以节省空间并提高性能。有关这些数字的更多信息,你应该查阅官方文档。
FLOAT和DOUBLE是近似计算,您不必指定精度。设置精度并插入超出规范的值,您的值将四舍五入到规范中。再看一下官方文件。
VARCHAR
正如您所期望的那样,VARCHAR是可变长度,但请记住,当您只需要5个字符时,不要指定类似VARCHAR(100)的内容,因为虽然在磁盘上存储长度是可变的,但是使用RAM时它需要指定的长度,因此您将浪费宝贵的内存。
BLOB和TEXT
BLOB和TEXT是以一种特殊的方式存储的,这取决于您使用的存储引擎。它们通常存放在“外部”区域。除非字符串是非常 long,否则您应该避免使用它。这种数据类型不能索引完整的长度,内存也不支持,因此系统的内存也不使用。当调用它时,将使用MyISAM存储引擎在磁盘上创建一个临时表,这将导致性能严重下降。
ENUM
这非常紧凑,在创建表时可以将特定的值设置为字段。字符串是固定的,更改ENUM列需要一个ALTER TABLE,因此您不必担心这个列的fix/变量长度。
编辑:
我在官方文档中找到了一个页面,可以回答你所有的问题,数据类型存储需求
https://stackoverflow.com/questions/6815994
复制相似问题