首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL固定长度和可变长度数据类型

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

Stack Overflow用户
提问于 2011-07-25 12:19:23
回答 1查看 16.8K关注 0票数 10

我正在优化DB,对于固定长度的数据类型,我不太清楚。

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

  • 第(N)章
  • 日期
  • 时间
  • 日期时间
  • 廷因特
  • 斯马林特
  • 米杜明
  • 整型
  • 浮子
  • 双倍

这些是variable-length

  • 文本
  • VARCHAR
  • 水滴

,如果我错了,请纠正我!

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

  • 时间戳
  • ENUM

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-25 12:50:16

在某些数据类型上不正确。

DATETIME/TIMESTAMP

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

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

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

TINYINT SMALL INT MEDIUMINT BIGINT

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

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

VARCHAR

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

BLOB和TEXT

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

ENUM

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

编辑:

我在官方文档中找到了一个页面,可以回答你所有的问题,数据类型存储需求

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6815994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档