MySQL性能优化-选择适合的字段类型

1、字段类型设计原则

  • 最小的就是最好的:减少磁盘、内存、缓存使用,降低I/O开销。
  • 尽量避免NULL:能为空的字段在索引的处理上更多复杂,也需要更多的存储开销。
  • 不要用字符串存储时间和数值,他们在存储和排序上的差距较大
  • 字符串长度相差较大时用varchar,长度接近时用char。varchar需要额外的2个字节存储长度信息。
  • int(1)和int(11)在存储上一样的,只是在客户端上看到的信息不一样

2、MySQL常用字段类型有:

  数值类型:

字段类型 大小(字节) 值范围
tinyint 1 (-128,127)
smallint 2 (-32768,32767)
mediumint 3 (-2^23,2^23-1)
int/integer 4 (-2^31,2^31-1)
bigint 8 (-2^63,2^63-1)
float 4  
double 8  
decimal(m,n)    

  字符类型:

字段类型 大小(字符) 说明
char 0-255 固定长度字符
varchar 0-65535 可变长字符
tinyblob    
blob    
mediumblob    
longblob    
tinytext   最多存255个字符
text   最多存65535字符
mediumtext    
longtext    

  时间类型:

字段类型 大小(字节) 值范围 显示格式 说明
year 1 [1901,2155] yyyy  
date 3 [1000-01-01,9999-12-31] yyyy-MM-dd 日期
time 3   HH:mm:ss 时间
datetime 8   yyyy-MM-dd HH:mm:ss 日期和时间
timestamp 4   yyyy-MM-dd HH:mm:ss.SSS 时间戳,可精确微妙,精度的位数可定义。

  其他:

字段类型 说明
bit 二进制字符串,长度1-64
set 集合类型,存储上实际是int类型
enum 枚举类型,最多支持65535个枚举项。枚举类型内部使用int类型存储

  MySQL没有bool(常用tinyint(1)表示布尔类型)、long类型

MySQL性能优化-选择适合的字段类型

上一篇:002 mysql之中的存储引擎


下一篇:ubuntu18下docker安装mysql5.7并登录