MySQL表设计---数据类型优化
- 在数据可控范围内,类型更小更好
- 使用简单数据类型,比如整形比字符串操作代价更小
- 尽量避免NULL,NULL值占用更多的空间,对含有NULL指的列创建索引也会使用更多的空间,且使索引变得复杂
- 对于整数INT来说,INT(1)和INT(10)存储是相同的
- 对于实数来说,浮点数float、double比decimal更省空间,并且服务器默认的计算类型为double,但是对于精度要求比较高的数据——如财务数据,则使用decimal,并注意位数对空间的影响。
- char保存定长字符串,varchar保存不定长字符串,varchar会多用一或两个字节来保存动态数据长度。varchar(5)和varchar(200)存储空间一样,但是varchar(5)性能更高。
- 对BLOB和TEXT进行排序时,不是对所有内容进行排序,应当指定每个列最长字节数max_sort_length,或者使用ORDER BY SUSTRING(column,length)
- 如果字符串内容变化小,应当推荐使用枚举替换字符串类型
- TIMESTAMP比DATETIME空间效率更高,但是TIMESTAMP存储时间范围更小,并且受MySQL服务器、操作系统以及连接的客户端的时区设置。
- 对于IP地址,推荐使用无符号整数来保存,并使用INET_ATON和INET_NTOA来进行转换,这样更节省空间,而不是使用char(15)来存储。
网友评论