这期内容当中小编将会给大家带来有关有哪些开发规范,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
#MySQL开发规范
##命名规范
库名、表名、字段名必须使用小写字母,并采用下划线分割
库名、表名、字段名禁止超过32字字符。须见名之意
库名、表名、字段名禁止使用Mysql保留字
临时库、表名必须以tmp为前缀,并以日期为后缀
备份库、表名必须以bak为前缀,并以日期为后缀
create table user ... tmp_user_20160606 bak_user_20160606
##基础规范
##库表设计
禁止使用分区表
拆分大字段和访问频率低的字段,分离冷热数据
用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
###good select * from profiles where sex='M' order by rating limit 10; select * from profiles inner join (select from profiles where x.sex='M' order by rating limit 100000,10) as x using (); ###bad select * from profiles where sex='M' order by rating limit 100000,10;
##行为规范
禁止有super权限的应用程序账号存在
不在业务高峰其期批量更新、查询数据库
提交线上建表改表需求,必须详细注明所有相关sql语句
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站