良好的schema设计原则具有普适性,但MySQL有它自己的实现细节要注意。概括来说,尽可能保持任何东西小而简单总是好的。MySQL喜欢简单,需要使用数据库的人应该也同样会喜欢简单的原则:

    • 尽量避免过度设计,例如会导致极其复杂的schema设计,或者有很多列的表设计(很多的意思是介于有点多和非常多之间)。
    • 使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该尽可能地避免使用NULL值。
    • 尽量使用相同数据类型存储相似或相关的值,尤其是要在关联条件中使用的列。
    • 注意可变长字符串,其在临时表和排序时可能导致悲观的按最大长度分配内存。
    • 尽量使用整型定义标识列(id)。
    • 避免使用MySQL已经遗弃的特性,例如指定浮点数的精度,或者整数的显示宽度。
    • 小心使用ENUM和SET。虽然它们用起来很方便,但是不要滥用,否则有时候会变成陷阱。最好避免使用BIT。

    范式是好的,但是反范式(大多数情况下意味着重复数据)有时也是必需的,并且能带来好处。预先计算、缓存或生成汇总表也可能获得很大的好处。
    最后,ALTER TABLE是让人痛苦的操作,因为在大部分情况下,它都会锁表并且重建整张表。虽然一些特殊的场景可以使用骇客方法;但是对大部分场景,必须使用其他更常规的方法,例如在备机执行ALTER并在完成后把它切换为主库。


    作者:一任天然

    来源:CSDN
    原文:https://blog.csdn.net/yirentianran/article/details/79352984
    版权声明:本文为博主原创文章,转载请附上博文链接!