MySQL优化---数据类型
MySQL优化---数据类型
1.尽可能使用最小类型,尽量使用最小类型存储。
2. tinyint unsigned(0-255)1字节==8位 二进制1111 1111 = 255
3. tinyint (-128-127)
4.尽量避免NULL
整数类型:
1.tinyint:1字节
2.smallint:2字节
3.mediumint:3字节
4.int:4个字节 (建索引比varchar快很多)
5.bigint 8字节
Int(?): ? 代表宽度,和varchar类型的长度限制不同。
表示没有设定的宽度的时候,用0来补充,但是需要配合zerofill来使用
create table bbb(id int(11) zerofill,id2 int(1));
INSERT INTO bbb VALUES(1,1)
小数类型
Float : 4字节
Double: 8字节
Decimal(8,2)用于精度极其高的计算,如财务的计算 ,价格可以以分做单位100.01 数据库存储10001
字符串类型
1.varchar
变长的字符串
优势:节省空间
缺点:在update的时候,如果数据长度变长了,就会去申请空间,就会有额外的工作,对性能有影响
什么情况下使用varchar:
1.字符串的最大长度比平均真实值大的比较多,这个时候就用
Varchar(100) , 平均用的只有20字符,但也有80,90的长度的值
2.更新频率比较低的字符串字段
存储空间:
非空:65533字节
可空:65532字节
2.Char
存储长度:create table t (char(10) not null)
非空: 存储255字节
可以为空:存储254字节
定长的字符串
什么情况使用:
1.适合存储比较短的字符串
2.存储固定长度或者存储长度比较接近的字符串
例如:手机号,MD5加密的密码
3.经常变更的数据,不容易产生碎片
4.存储比较短的字符串值,例如 Y/N
注意点:如果插入的值末尾有空格,会自动截取掉
3.Text
非非二进制字符串,变长的
4.Blob
用于存储二进制数据,大二进制数据
日期时间类型:
1.year 1字节 1byte
2.date 3字节 YYYY-MM-DD
3.time 3字节 HH:MM:ss
4.Datetime 8字节 YYYY-MM-DD HH:MM:ss
5.Timestamp 4字节
区别:
存储空间
Datetime 存储到9999年, 查看比较直观 阿里规范中使用表示时间
Timestamp 从1970-1-1凌晨 存储到2038年 确定程序用不到2038年的建议使用
参考资料 动脑学院老师笔记。