首页 > 技术文章 > 【MySql调优】数据类型的选择

wjjer 2020-08-07 14:55 原文

一、字段类型优先级

  1. 数字类型
  2. 日期类型与二进制类型
  3. 字符串类型

1、整数类型

整数类型

数据存储原理,innodb 默认使用16k为一页保存数据,也就是说在16k一页中,保存的数据越多,越有利于磁盘IO的处理。

 

2、实数类型

DECIMAL(18,9)占用9个字节,财务数据一定要使用DECIMAL

 

小贴士 

思考:代理主键使用INT还是BIGINT?

bigint采用8字节,int使用4字节,无符号型int能保存40亿条数据,所以,一般场景下,使用int即可

 

2、Varchar类型

       VARCHAR变体长度,根据实际内容保存数据

  1. 使用最小符合需求的长度
  2. VARCHAR(255)以下使用额外一个字节保存长度
  3. VARCHAR(255)以上使用额外两个字节保存长度
  4. VARCHAR(5)与VARCHAR(200)内存占用不同
  5. VARCHAR变更长度时5.6以前,会出现锁表

     VARCHAR的使用场景

  1. VARCHAR适合存储长度波动大的数据(如博客文章)
  2. 字符串很少被更新的场景
  3. VARCHAR适合保存多字节字符

 3、CAHR类型

    CHAR属于定长数据

  1. CHAR最大长度255
  2. CHAR类型会自动删除未尾的空格
  3. CHAR检索效率比VARCHAR高

 

CHAR的使用场景

  1. CHAR适合存储长度波动不大的数据,如MD5摘要
  2. CHAR适合存储短字符串
  3. CHAR类型适合存储经常更新的字符串

4、DataTime日期类型

DATETIME日期时间类型,占用8个字节

  • 与时区无关
  • 可保存到毫秒
  • 可保存时间范围大

PS:不要使用字符串存储日期类型

  因为:字符串无法使用mysql日期函数进行操作,存储占用比datetime多

 

5、TIMESTAMP时间戳

√TIMESTAMP时间戳,占用4个字节

  • 时间范围:1970-01-01到2038-01-19
  • 精确到秒
  • 采用整型存储
  • 依赖于时区
  • 自动更新timestamp列的值

 

 

 

 

 

推荐阅读