选择正确数据类型的依据:
1、更小的通常更好,因为它们占用更少的磁盘、内存和CPU缓存。
2、简单的数据类型
2、避免使用null,通常情况下最好指定列为NOT NULL,除非真的需要存储NULL值。可为NULL的列使得索引、索引统计和值比较都更为复杂。
整数类型
TINYINT、SMATLLINT\MEDIUMINT、INT、BIGINT分别使用8、16、24、32、64位存储空间。MYSQL可以为整数类型指定宽度,但是对大多数应用没有意义,它只是规定了某些数据库交互工具显示的字符个数,在存储和计算中它们和不加列宽是一样的效果。
实数类型
DECIMAL、FLOAT、DOUBLE。在数据量比较大的时候,将小数乘以指定倍数,并使用BIGINT存储,这样可以避免浮点存储计算不准确和DECIMAL精确计算代价高的问题。
字符串类型
VARCHAR(10)为变长字符串,最大长度为10,需要11个存储空间,10个做字符存储空间用,1个做记录长度用。如果最大长度大于255则需要用两个字节记录长度,如VARCHAR(1000)的列则需要1002个字节。VARCHAR在update时面临空间需要增长的问题,这需要额外的工作。下面的情况使用VARCHAR是合适的:字符串列最大长度比平均长度大很多;列的更新很少,所以碎片不是问题;使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。
CHAR适合存储很短的字符串,或者所有值都接近同一个长度。例如,CHAR非常适合存储密码的MD5值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长不容易产生碎片。CHAR比VARCHAR少一些记录长度的字节。当存储CHAR的时候,MYSQL服务器会