MySQL 规约
MySQL About 945 words表必备三字段:id,gmt_create,gmt_modified
其中 id 必为主键,类型为unsigned bigint 、单表时自增、步长为 1。 gmt_create,gmt_modified 的类型均为 datetime 类型,前者现在时表示主动创建,后者过去分词表示被动更新。
不得使用外键与级联,一切外键概念必须在应用层解决
外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。
SQL性能优化的目标:至少要达到range级别,要求是ref级别,如果可以是consts最好
1 )consts单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
2 )ref指的是使用普通的索引(normal index)。
3 )range对索引进行范围检索。
explain 表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index级别比较range还低,与全表扫描是小巫见大巫。
表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint(1表示是,0表示否)
主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名则为idx_字段名
小数类型为decimal,禁止使用float和double
如果存储的字符串长度几乎相等,使用char定长字符串类型
不要使用count(列名)或count(常量)来替代count(),count()是SQL 92定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关
count(*) 会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行。
字符统计函数的区别
SELECT LENGTH("轻松工作");返回为12
SELECT CHARACTER_LENGTH("轻松工作");返回为4
如果需要存储表情,那么选择utf8mb4来进行存储,注意它与utf-8编码的区别。
禁止使用存储过程,存储过程难以调试和扩展,更没有移植性
in操作能避免则避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控制在 1000 个之内
Views: 4,789 · Posted: 2019-04-02
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...