这期内容当中小编将会给大家带来有关MySQL有哪些开发规范,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

#MySQL开发规范

##命名规范

库名、表名、字段名必须使用小写字母,并采用下划线分割

库名、表名、字段名禁止超过32字字符。须见名之意

库名、表名、字段名禁止使用Mysql保留字

临时库、表名必须以tmp为前缀,并以日期为后缀

备份库、表名必须以bak为前缀,并以日期为后缀

createtableuser...tmp_user_20160606bak_user_20160606

##基础规范

使用innodb存储引擎

表字符集使用utf-8

所有表必须添加注释

单表数据量控制在5000w以内

不在数据库中存储图片、文件等大数据

禁止在线上做数据库压力测试

##库表设计

禁止使用分区表

拆分大字段和访问频率低的字段,分离冷热数据

用hash进行散表,表名后缀使用十进制数,下标从0开始

按日期时间分表需符合YYYY[MM][DD][HH]格式

采用合适的分库分表策略。例如十库百表等

##字段设计

所有字段均定义为not null

尽量不使用TEXT、BLOB类型

使用decimal代替float和double存储精确浮点数

使用tinyint代替enum类型

使用unsigned存储非负整数

使用timestamp存储时间

使用int存储时间戳

使用int存储ip

禁止在数据库存储明文密码

##索引规范

单张表索引数量不超过5个

单个索引中的字段数不超过5个

前缀索引长度不超过8个字符

区分度最大的字段放在前面。如:联合索引

尽量不选择字符串列

不使用外键

不使用更新频繁的列

不使用UUID MD5 HASH

不使用%前导的查询,如like "%ab"

不使用负向查询,如not in/like

不在低基数列上建立索引,例如:性别

不在索引列进行数学运算和函数运算

##SQL设计

充分利用前缀索引,例如:最左前缀

不使用select *

不能同时用到两个范围条件

不使用存储过程、触发器、视图等

不使用大表join

不使用数学运算和逻辑判断

不使用order by rand()

不使用单条sql语句同时更新多个表

多使用insert ... on duplicate key update

多使用replace into、insert ignore、insert into values(),(),()

多使用update ... where id in(10,20,50,...)

使用in代替or, in的值不超过1000个

使用explain诊断,避免生成临时表

使用union all而不是union


###goodselect*fromprofileswheresex='M'orderbyratinglimit10;select*fromprofilesinnerjoin(selectfromprofileswherex.sex='M'orderbyratinglimit100000,10)asxusing();###badselect*fromprofileswheresex='M'orderbyratinglimit100000,10;

##行为规范

禁止有super权限的应用程序账号存在

不在业务高峰其期批量更新、查询数据库

提交线上建表改表需求,必须详细注明所有相关sql语句

上述就是小编为大家分享的MySQL有哪些开发规范了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。