MySQL使用规范
一、 表设计类
强制类规范
1. 创建表的存储引擎必须是InnoDB。
2. 每个表必须显式的指定一个主键。
3. 不允许使用联合主键。
4. 不允许使用外键。
5. 不允许存在和主键重复的索引。
6. 自增长字段必须是主键或唯一索引。
7. 不允许在数据库中存储诸如图片,影像之类的二进制数据。
8. 不允许使用TEXT类型字段
9. 建表时不允许显式的指定除了utf8之外的其他字符集。
10. 对于所有声明为NOT NULL的字段,必须显式指定默认值。
11. 必须包含时间戳字段DataChange_LastTime,定义默认值为CURRENT_TIMESTAMP和on update CURRENT_TIMESTAMP,并添加索引。
12.不要使用系统或者常见的名称作为表名 如order
建议类规范
1. 建议使用自增长字段作为主键。
2. 对较长的字符类型,如果需要索引,则建立前缀索引。
3. 不建议在数据库存放日志。
4. 建议将字段都定义为not null。
5. 选用能满足需求的最小类型。
6. 避免使用保留字命名DB对象。
7. 对表和字段都添加备注说明。
二、 SQL类
强制类规范
1. 禁止使用子查询。
2. 禁止使用select *,必须指定需要的字段。
3. update/delete只能单表操作,不允许多表关联,不允许用子查询,且一定要带where条件。
4. insert语句要显式指定插入的列名,且不允许使用insert .... select的形式。
5. 不允许使用存储过程、存储函数、触发器和视图。
6. 单条查询语句中,不允许出现多于一次的join。
7. 不要在where后的筛选字段上做运算。
建议类规范
1. 尽量不要在数据库里做运算。
2. 尽量不要做‘%’前缀模糊查询,如 like '%name'。
3. 不要使用大偏移量的limit分页。
4. 连接MySQL不要设置成autocommit=0。
5. 批量insert语句最好采用bulk insert的方法,如insert into table(xxx) values (xxx),(xxx)。
6. update/delete尽量根据主键进行操作。
7. 尽量减少count()的使用,尤其是用来频繁获取全表记录数。
8. 使用group by时,如无排序的需求,建议加order by null。
9. Join中使用的关联字段使用统一数据类型。
MySQL使用规范的更多相关文章
- [转载] 根据多年经验整理的《互联网MySQL开发规范》
原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...
- [转发] 老叶观点:MySQL开发规范之我见
原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...
- MySQL 数据库规范--调优篇(终结篇)
前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...
- 从MySQL开发规范处看创业
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...
- MySQL数据库规范
Mysql数据库规范 一.基础规范 [强制]使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,并发性能更好,CPU及内存缓存页优化使得资源利用率更高[强制] ...
- 建议收藏 - 专业的MySQL开发规范
为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...
- mysql 数据库 规范
目录 mysql 数据库 规范 基础规范 命名规范 表设计规范 字段设计规范 索引设计规范 SQL编写规范 行为规范 mysql 数据库 规范 基础规范 必须使用InnoDB存储引擎 解读:支持事务. ...
- 阿里:MySQL数据库规范
阿里:MySQL数据库规范 简介:基于阿里数据库设计规范扩展而来 设计规范 1.[推荐]字段允许适当冗余,以提高查询性能,但必须考虑数据一致.冗余字段应遵循: 不是频繁修改的字段. 不是 varcha ...
- 根据多年经验整理的《互联网MySQL开发规范》
一.基础规范 使用 INNODB 存储引擎 表字符集使用 UTF8 所有表都需要添加注释 单表数据量建议控制在 5000W 以内 不在数据库中存储图⽚.文件等大数据 禁止在线上做数据库压力测试 禁⽌ ...
随机推荐
- java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0
日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...
- PHP 模拟 HTTP 摘要认证(Digest )
<?php header("Content-type: text/html; charset=utf-8"); /*php摘要认证*/ $users = ['dee'=> ...
- [react-router] hashHistory 和 browserHistory 的区别
react-router提供了三种方式来实现路由,并没有默认的路由,需要在声明路由的时候,显式指定所使用的路由. //v1.x <Router/> //v2.0.0 // hash his ...
- 阿里云服务器Linux CentOS安装配置(五)jetty配置、部署
阿里云服务器Linux CentOS安装配置(五)jetty配置.部署 1.官网下载jetty:wget http://repo1.maven.org/maven2/org/eclipse/jetty ...
- 开发者所需要知道的 iOS 10 SDK 新特性
转自:https://onevcat.com/2016/06/ios-10-sdk/ 写的很好啊.哈哈哈 总览 距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数.在我 ...
- 我喜欢ASP.NET的MVC因为它牛逼的9大理由(转载)
我很早就关注ASP.NET的mvc的,因为最开始是学了Java的MVC,由于工作的原因一直在做.Net开发,最近的几个新项目我采用了MVC做了,我个一直都非常喜欢.Net的MVC.我们为什么使用MVC ...
- ncurses库的一些函数
为了实现一个简单的聊天程序,如果使用普通的输入输出函数,会很凌乱.so,便想着能不能用下 ncurses这个字符图形库 总结一下,就是这样. 使用ncurses时,先需要初始化窗口,程序结束时,主动调 ...
- C#面试(2016年4月)
1.WebForm和MVC的区别 MVC: 1)通过model.view.controller将处理后台逻辑代码与前台展示逻辑代码进行了很好的分离: 2)通过修改路由规则,可以控制生成自定义的url, ...
- [转]搬瓦工教程之九:通过Net-Speeder为搬瓦工提升网速
搬瓦工教程之九:通过Net-Speeder为搬瓦工提升网速 有的同学反映自己的搬瓦工速度慢,丢包率高.这其实和你的网络服务提供商有关.据我所知一部分上海电信的同学就有这种问题.那么碰到了坑爹的网络服务 ...
- git-credential-winstore.exe": No such file or directory
$ git push -u origin master\"D:/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe ...