1.使用InnoDB引擎
支持事务、行级锁、并发性能更好,具体的我在另一篇文章会详细介绍InnoDB
和MyISAM
的区别
2.使用utf8或utf8mb4字符集
utf8
是万国码,无需转码,无乱码风险,节省空间,但是如果业务需要支持emoji
和复杂汉字 如龑
(这是我大学同学名字中的字,每次报名找半天,上课老师不会读)就需要使用utf8mb4
字符集,他是utf8
的超集,缺点就是不节省存储空间。然而在硬件发达的今天这些都不是事了。
3.字段加注释
这一点不想说什么,懂得都懂
4.不要再数据库上使用存储过程,事务和触发器,event等
请让数据库做他擅长的事情存储和索引
5.禁止存大文件
直接存储url就行了
6.命名要见名知意
命名要有意义,不得与关键字冲突,使用下划线分割单词,禁止用拼音。索引命名最好是索引类型加_
索引名称。如unique_mobile
7.禁止使用null
null
这是个该死的玩意,如果你使用了你会后悔。他会废掉mysql一个重要的功能---索引
8.尽量不要使用ENUM
ENUM
更加的节省空间效率那为什么不用呢?比如文章的状态,有草稿,审核中,打回,已发布4种,假设你使用ENUM
来存储,他就4个值。突然有一天产品经理说要给文章审核分一级审核,二级审核。那么你除了程序要做相关修改外还要去数据库去做调整。直接操作线上数据库是一件很危险的事情,所以建议使用tinyint
代替ENUM
。当然如果你百分之百确定就只用那么几个可能你可以使用ENUM
,比如性别 最多三种状态, 男 女 未知。
9.表名称要有统一的前缀
10.字段拆分
不常用的字段垂直拆分出去,大字段垂直拆分出去。
11.尽可能少用text和blob
这样的字段类型能存储的内容非常之大,如果可以,请用varchar代替,即使非用不可也请考虑tinytext,并且垂直拆分出去。
12.合理使用索引
索引固然能大大提高搜索效率,但他同时给插入更新带来了额外的消耗,索引索引不能随意建立。
网友评论