概述
一、优化数据类型的几个原则:
1. 更小的通常更好
a) 一般情况下应该尽量使用可以正确存储数据的最小值数据类型
b) 更小的通常更快,因为它占用更少的磁盘内存和cpu缓存,处理时需要的cpu周期更少
2. 简单就好
a) 简单数据类型的操作通常需要更少的cpu周期
3. 尽量避免NULL
a) 查询中包含可能为NULL的列,能够使MySQL更难优化
b) 可为NULL列会占用更多的存储空间,在MySQL也需要特殊处理
c) 当可为NULL的列被索引时候,每个索引继续需要一个额外的字节
注:在为列选择数据类型时,第一步需要确定合适的大类型:数字、字符串、时间等,
下一步是选择具体类型。
二、整数类型优化
1. 存储整数可以使用的几种数据类型:
a) TINYINT(8)
b) SMALLLINT(16)
c) MEDIUMINT(24)
d) INT(32)
e) BIGINT(64)
2. 整数类型可选UNSIGNED属性,标识不允许负值
a) TINYINT UNSIGNED(0~255)是TINYINT(-128~127)的两倍
3. 整数计算一般使用64位的BIGINT
4. MySQL可以为整数类型数据指定宽度:如int(11),
a) 不会限制值的合法范围
b) 只是规定了MySQL的交互工具显示字符的个数
c) 对于存储和计算来说,INT(1)和INT(11)是相同的
d) 如果一个字段设置了无符号和填充零属性,那么无论这个字段存储什么数值,数值的长度都会与设置的显示宽度一致,如上述例子中的字段b,插入数值1显示为00000000001,左边补了10个零直至长度达到11位;
e) 设置字段的显示宽度并不限制字段存储值的范围,比如字段d设置为int(5),但是仍然可以存储1234567890这个10位数字;
f) 设置的字符宽度只对数值长度不满足宽度时有效,如d字段int(5),插入1时,长度不足5,因此在左边补充4个零直到5位,但是插入1234567890时超过了5位,这时的显示宽度就起不了作用了。
三、实数类型
1. 实数是带小数部分的数字
a) 可是使用DECIMAL储存比BIGINT还打的数字
2. DECIMAL类型用于存储精确的小数
a) DECIMAL(18,9)小数点两边个存储九个数字,一共使用九个字节,,小数点前后各有四个字节,小数点本身占一个字节
b) decimal(a,b)
1. a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
2. b指定小数点右边可以存储的十进制数字的最大个数。小数位数 必须是从 0 到 a之间的值。默认小数位数是 0。
3. DECIMAL需要额外的空间和计算开销,应该尽量只对小数进行精确计算是才使用DECIMAL(储存财务数据)。
a) 在数据量比较大的时候,可还是考虑使用BIGINT代替DECIMAl,这时将需要储存的货币单位根据小数的位数诚意相应的倍数即可。
b) 假设要储存的财务数据精确到万分之一,则可以把所有的金额乘以一百万,然后将结果储存到BIGINT里面。同时避免浮点储存计算不精确和DECIMAL精确计算代价高的问题。
最后
以上就是踏实香烟为你收集整理的mysql 64位整型_高性能MySQL笔记精简(整数和实数优化)的全部内容,希望文章能够帮你解决mysql 64位整型_高性能MySQL笔记精简(整数和实数优化)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复