MySQL调优(5)-数据类型优化

数据类型

整形:

可以使用的几种整数类型:TINYINT,INT,BIGINT分别使用1,4,8个字节存储空间
尽量使用满足需求的最小数据类型

字符和字符串
  • char 固定长度的字符串,最大长度255,自动trim,写查高效,空间换时间,适合存储固定长度的字符串

  • varchar 变长字符串 : varchar(n) n小于等于255使用额外一个字节保存长度,n>255使用额外两个字节保存长度,依次类推

  • varchar(5)与varchar(255)保存同样的内容,硬盘存储空间相同,但内存空间占用不同,是指定的大小

时间类型
  • datetime 占用8个字节 与时区无关 可保存到毫秒 适配日期函数
  • timestamp 占用4个字节 精确到秒 采用整形存储(时间戳) 依赖数据库设置的时区 支持自动更新timestamp列的值
  • date 3个字节 适配日期函数 date类型用于保存1000-01-01到9999-12-31之间的日期
IP地址

人们经常使用varchar(15)来存储ip地址,然而,它的本质是32位无符号整数不是字符串,可以使用INET_ATON()和INET_NTOA函数在这两种表示方法之间转换
案例:
select inet_aton(‘1.1.1.1’)
select inet_ntoa(16843009)

更小的更好

应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少

注意,建表时候指定的长度与字段值实际占用的空间无关,只是一个检验限制的功能,实际占用的空间与数据类型相关

1、整型比字符操作代价更低,因为字符集和校对规则是字符比较比整型比较更复杂

2、使用mysql自建类型(date、timestamp、datetime)而不是字符串来存储日期和时间

3、用整型存储IP地址(函数转换)

避免Null

如果查询中包含可为NULL的列,对mysql来说很难优化,因为可为null的列使得索引、索引统计和值比较都更加复杂,坦白来说,通常情况下null的列改为not null带来的性能提升比较小,所有没有必要将所有的表的schema进行修改,但是应该尽量避免设计成可为null的列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值