一些需要注意的数据类型小知识
- 整数类型 DECIMAL会进行精确的计算,mysql服务器里自带的,cpu原生的一般都是浮点计算,使用金额等数据DECIMAL类型会比较适合,但是开销挺大的,可以把小数型的金额乘以小数点位数转化为整形以BIGINT的类型存储在MYSQL里。
- 字符类型 VARCHAR 不定长,CHAR定长。 VARCHAR 更新可能会带来磁盘重新整理,且需要额外的字符位数来存储长度信息。 CHAR类型适合来存储短的或者长度固定的数据(密码的MD5加密值),CHAR类型的值末尾的空白会被截除。
- 适用于长类型的数据 BLOB(二进制存储)和TEXT(字符类型存储)对这两种数据类型排序时,只检索每列数据的max_sort_length 写SQL 这样写: ORDER BY SUSTRING(column,length)
选择合适的数据类型来做为主键
- MySQL不推荐使用字符串类型来当作主键,因为消耗空间。
MD5(),SHA1()等函数产生的随机字符串可能会导致INSERTSELECT等语句变得很慢。(因为随机值的写入位置不同需要处理索引文件,尤其是聚簇索引这种带有排序性质的索引结构,同时读取的时候反问磁盘的位置也是随机的)- 导致无法缓存比较“常用”的数据。
表的结构的设计
- 表的设计的范式与反范式(此后会专门写一篇文章来详细描述数据库设计的范式原理)
- 数据的查询不要关联太多的表(反范式的设计有时候是可以考虑的),在《高性能MySQL》中推荐:在保证查询速度与并发性的前提下,单个查询的表的关联数一般在12个表以内
- 列尽量不要使用允许 NULL 的设定
本文介绍了MySQL中不同类型数据的特点及适用场景,如DECIMAL、VARCHAR、CHAR等,并讨论了如何选择合适的数据类型作为主键。此外,还探讨了表结构设计原则,包括避免过多表关联,以及列定义中NULL值的影响。
1823

被折叠的 条评论
为什么被折叠?



