数据类型优化
优化原则
越小越好:使用可以正确存储数据的最小数据类型
简单就好
尽量避免NULL:可为NULL的列使得索引、索引统计和值比较都更复杂
为列选择数据类型的顺序
第一步:确定合适的大类型:数字、字符串、时间等
第二步:选择具体类型
整数类型
如果存储整数,可以使用:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
整数运算一般使用64位的BIGINT整数,MySQL为整数指定宽度没有意义,只是规定了MySQL的一些交互工具用来显示字符的个数
实数类型
可以使用DECIMAL存储比BIGINT还大的整数
MySQL既支持精确类型,也支持不精确类型
FLOAT和DOUBLE类型支持使用标准的浮点运算进行近似计算
DECIMAL类型用于存储精确的小数
浮点和DECIMAL类型都可以指定精度
浮点类型在存储同样范围的值时,通常比DECIMAL使用更少的空间
因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用DECIMAL
但在数据量比较大的时候,可以考虑使用BIGINT代替DECIMAL,将需要存储的货币单位根据小数的位数乘以相应的倍数即可,这样可以同时避免浮点存储计算不精确和DECIMAL精确计算代价高的问题
字符串类型
VARCHAR
VARCHAR比定长类型更节省空间,因为它仅使用必要的空间,除