数据库的优化-数据类型

1.数据类型

1.1整数类型 mysql的整数类型有tinyint,smallint,mediumint,int,bigint,分别使用8,16,24,32,64位存储。存储长度是 :负的2的N-1次方 ~ 2的N-1次方,N代表位数。 unsigned是整数类型的一个属性,表示不予许负值,当类型为unsigned时,他的存储范围扩大一倍。 但是无论有无符号,都具有相同的存储空间,和相同的性能。 mysql可以为整数设置宽度,但是他不会限制值的合法范围,对于存储和计算,int(2)和int(12)是一样的

1.2实数类型 float 和decimal,decimal 用于存储精确的小数,但占用更多的存储空间,一般decimal可用于存储财务的数据,但在数据量比较大时,可以考虑用bigint代替decimal。 一般float存储需要4个字节,decimal需要8个字节。

1.3字符类型 varchar 和char varchar是变长的,它只占有它有需要的空间,所以它卡起来比定长类型更节省空间。varchar需要1到2个额外的字节 记录字符串的长度,当长度小于等于255的时候用1个字节,大于255用2个字节。 由于是变长的,所以在update时行可能变得更长,那么占用的空间会增长,如果没有足够的空间,这种情况下,不同的存储引擎采用的方式不同,MyISAM会将行拆分为不同的片段存储,InnoDB则会分裂页 在这种情况下适合使用varchar,当这列最大长度比平均长度大很多,并不经常更新操作

char类型是定长的,char适合存储较短的字符串,而且字符串的长度都差不多,经常变更的列

varchar(200)和varchar(5) 存储字符串 'mysql' 时所占用的内存是相同的,但是在分配内存的时候,varchar(5) 显然会分配更小的内存。

1.使用能正确储存数据的最小数据类型 更小的数据类型通常更快,因为他们占用更小的磁盘,内存,cpu缓存,并且处理时需要的cpu周期也更 少,确保没有低估所需要存储数据的范围。 2.选择简单的数据类型 简答的数据类型,通常cpu的操作周期较短。 如整形操作代价比字符串低,通过数据库自带的数据类型存储时间日期。 3.尽量避免使用null 使用null的列,使得索引,索引的统计,值的比较都变得更加的复杂。 使用null的列占用更多的存储空间 使用null的列被索引时,索引记录需要额外的字节。

转载于:https://my.oschina.net/zkx520/blog/905238

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值