美文网首页
如何选中 Mysql 的数据类型?

如何选中 Mysql 的数据类型?

作者: 我是许同学 | 来源:发表于2018-12-05 12:18 被阅读7次

基本原则

  1. 数字类型 > 日期、二进制类型 > 字符类型
  2. 占用空间小的类型 > 占用空间大的类型

整数类型

image.png

注意:int(2) 还是会占用4个字节,如果存储2个字节的整形建议使用 smallint

实数类型

image.png

举例:DECIMAL(18,9) 需要9个字节来存储。

varchar

存储的特点

  1. 用于存储边长字符串,只占用必要的存储空间
  2. 列的最大长度小于255时,则只占用一个额外字节用于记录字符串的长度
  3. 列的最大长度大于255时,则占用两个额外的字节用于记录字符串的长度(因此 vachar 只能最大存储65535个::字节::)

::注意: varchar(10) ,括号中的10🈯️的是字符数,并不是字节数::

长度的选择问题

  1. 使用最小的符合需求的长度
  2. varchar(5)和 varchar(200) 存储’Mysql’字符串性能不同,为了更有效的优化查询,在内存中对字符串使用的是固定的宽度

适用场景

  1. 字符串列的最大长度比平均长度大很多
  2. 字符串列很少被更新(其变长的特性,会导致存储页分裂)
  3. 使用了多字节字符集存储字符串

char

存储特点

  1. 定长的
  2. 会删除尾部的空格
  3. 最大宽度255

适用场景

  1. 存储长度近似的值,比如密码加密后的 MD5值、身份证、手机号
  2. 短字符串
  3. 经常被更新的字符串列

DATETIME

  1. 存储范围:1000-01–1 00:00:00 到 9999-12-31 23:59:59
  2. 存储精度:
    datetime = YYYY - MM - DD HH:MM:SS
    datetime(6) = YYYY -MM - DD HH:MM:SS .fraction
  3. 与时区无关
  4. 占用8个字节

TIMESTAMP

  1. 存储范围:1970-01-01 ~ 2038-01-19
  2. 存储精度:YYYY-MM-DD HH:MM:SS.[fraction]
  3. 与时区相关
  4. 占用4个字节
  5. 在行的数据修改时可以自动修改 timestamp 列

DATE

  1. 范围1000-01-01 ~ 9999-12-31
  2. Mysql5.6
  3. 占用3个字节

TIME

占用3个字节

存储日期时间类型的主意事项

  1. 不要使用字符串类型来存储日期时间数据

    • 日期类型一般比字符串类型占用空间小
    • 查找过滤时,使用日期类型性能好
    • 方便使用 mysql 内置的时间日期函数,对时间日期进行处理
  2. 使用 int 存储时间日期不如使用 Timestamp类型

相关文章

网友评论

      本文标题:如何选中 Mysql 的数据类型?

      本文链接:https://www.haomeiwen.com/subject/hsmicqtx.html