数据库基础03-优化数据库性能,从选择合理的数据类型开始

Mysql中常见的数据类型

     选择恰当的数据类型,对于MYSQL服务器的性能影响至关重要,在建表根据自己的业务逻辑选择恰当的数据类型和数据长度,也是我们MYSQL查询优化的一种重要方式;

参考书籍:《高性能MYSQL》

数据类型选择的

1.数据类型选择遵守的原则

  • 更小的通常更好(在正常存储数据的情况下,最小数据类型最好,可以提高性能)
  • 尽量避免null

基础知识点

1.不同编码类型,存储数据的大小不一致。utf-8, 一个汉字3字节 英文字母1字节;
2.GBK存储,1个汉字2个字节,英文字母1个字节;

2.数字类型

1.整数类型

存储的值的范围在-2(n-1)到2(n-1)-1,其中n是存储空间的维数

类型 大小 特点 备注
unsigned 表示无符号的,表示不允许负值,可以让正数的大小扩大一倍
Zerofill 标记 Int(4) zerofill显示时不足4位会补0
tinyint 1字节,8位,大小在-128~127 tinyint unsigned 大小编程了 0~255
smallint 2字节,16位
mediumint 3字节,24位
int 4字节,32位
bigint 8字节,64位

2.实数类型

一般用域存储带小数点的。可以分为精确类型和不精确类型。
浮点类型

类型 大小 特点 备注
FLOAT 4字节
dobule 8字节

精确类型

类型 大小 特点 备注
decimal 定点浮点型做精确运算
nemeric

3. 字符串类型

分配的长度过多,会造成排序操作的性能损失

类型 大小 特点 备注
varchar 大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节 1.括号中给定的是最大长度
2.变长字符串,用于存储可变的长字符串,比定长更胜空间
3.容易产生碎片
具体和存储引擎有关
char 最长不超过255个字节 1.定长字符串;
2.效率更高;
3.如果长度不足会补空格;
4.比较适合用来存储密码之类;
可以用来存储是非性别值,因为只需要1个字节,varchar还需要额外的1个字节记录长度
text 65535字节 保存字符串
有字符集和排序规则
mysql无法对全部长度的字符串索引
blob 用来保存二进制字节数据 mysql无法对全部长度的字符串索引

4. 日期和时间类型

类型 大小 特点 备注
DATETIME 包含最大范围的值,从1001-9999年,精度位秒 1.将日期封装进YYYYMMDDHHMMSS的正数据中,与时区无关,8个字节存储
TIMESTAMP 从1970年1月1日开始到2038年 1.修改一行数据时,第一个timestamp字段会自动更新为系统当前时间
2.不能取null值,填入null值时,就会自动填入当前系统时间;
3.空间效率更高

5.其他类型

位数据类型和选择标识符类型没用的比较少,大概了解一下;具体可以看《高性能MYSQL》相关章节知识

原文地址:https://www.cnblogs.com/perferect/p/13101928.html