建表时,往往需要考虑字段的类型的问题.
可优化性不强,需要注意以下的几个原则
2.1 尽可能占用更少的存储空间
多少字节Byte!
tinyint:1, smallint 2, mediumint 3, int 4, bigint 8
但是小空间带来的问题,存储量的减少,范围的减少.
Boolean =tinyint
datetime:8 timestamp:4 datetimeyear
datetime和 timestamp的选择?
存储 2039年,超过了unix时间戳范围:
timestamp字段失败了.
timestamp占用4个字节,存储的时间范围是有限的.1970-2038-1-19 3:11
例如存储登录时间.就可以用timestamp来存储.
2.2 尽可能定长(占用固定的存储空间)数据类型
定长的数据类型的运算速度,要不变长的数据类型速度快.
类型:char(32), varchar(32)
数据:hellokang, hellokang
空间:32, 9+1(1个空间记录长度)
如果在乎存储空间:varchar
在乎的计算效率:char,最大长度为255
varchar()于 text的选择?
varchar,占用记录的存储空间
text,不占用记录的存储空间
一条记录的存储的空间有最大的限制,默认是65535Bytes
浮点(double8,float4) 定点(decimal)
浮点,更在乎存储空间,不能保留全部的精度.定长数据类型,占用固定的存储空间.
定点,更在乎精度,保留精度.占用非固定的存储空间,随着有效数位增加,而占用更多的存储空间.
PHP,float,他是双精度的double,占用8个字节!
2.3 尽可能用整数代替字符串
整数计算能力最强.
典型的 ipv4的存储,可以转成int.(存储空间小,整数计算快)
使用起来是字符串,存储起来是整数
enum,枚举,单选: 0 / 1
set集合,复选: 1 2 3 4 5 ...