一、    表设计类

强制类规范

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使用规范的更多相关文章

  1. [转载] 根据多年经验整理的《互联网MySQL开发规范》

    原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...

  2. [转发] 老叶观点:MySQL开发规范之我见

    原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...

  3. MySQL 数据库规范--调优篇(终结篇)

    前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...

  4. 从MySQL开发规范处看创业

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...

  5. MySQL数据库规范

    Mysql数据库规范 一.基础规范 [强制]使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,并发性能更好,CPU及内存缓存页优化使得资源利用率更高[强制] ...

  6. 建议收藏 - 专业的MySQL开发规范

    为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...

  7. mysql 数据库 规范

    目录 mysql 数据库 规范 基础规范 命名规范 表设计规范 字段设计规范 索引设计规范 SQL编写规范 行为规范 mysql 数据库 规范 基础规范 必须使用InnoDB存储引擎 解读:支持事务. ...

  8. 阿里:MySQL数据库规范

    阿里:MySQL数据库规范 简介:基于阿里数据库设计规范扩展而来 设计规范 1.[推荐]字段允许适当冗余,以提高查询性能,但必须考虑数据一致.冗余字段应遵循: 不是频繁修改的字段. 不是 varcha ...

  9. 根据多年经验整理的《互联网MySQL开发规范》

    一.基础规范 使用 INNODB 存储引擎 表字符集使用 UTF8  所有表都需要添加注释 单表数据量建议控制在 5000W 以内 不在数据库中存储图⽚.文件等大数据 禁止在线上做数据库压力测试 禁⽌ ...

随机推荐

  1. [转]你不需要jQuery

    完全没有否定jQuery的意思,jQuery是一个神奇的.非常有用的工具,可以节省我们大量的时间. 但是,有些时候,我们只需要jQuery的一个小功能,来完成一个小任务,完全没有必要加载整个jQuer ...

  2. TabSiPlus发布1749版本

    拖了几天,终于可以发布了,下载地址如下: http://www.winmsg.com/download/TabSiPlus_0_99b2_1749.rar 这个包里没有附带VC的运行库,考虑到大多数人 ...

  3. oracle查询某个时间点的数据

    1. select * from emps as of timestamp to_Date('2015-12-11 14:00:00','yyyy-mm-dd hh24:mi:ss'),SQL语句是查 ...

  4. 如何查看当前使用的Entity Framework版本

    Visual Studio 中-----工具-----NuGet套件管理员-----套件管理器控制台-----输入Get-Package即可查看当前使用的版本信息

  5. Spring原理解析-利用反射和注解模拟IoC的自动装配

  6. Lua屏蔽对象方法和恢复的方法

    背景 对于OO思想实现的类, 对于某些场景需要屏蔽某些方法, 不让调用.过了这段场景, 就恢复这些类的方法, 可以调用. 例如: 工厂具有开工方法, 但是在晚上不允许开工, 所有在晚上这段时间, 见开 ...

  7. lua协程一则报错解决“attempt to yield across metamethod/C-call boundary”

    问题 attempt to yield across metamethod/C-call boundary 需求跟如下帖子中描述一致: http://bbs.chinaunix.net/forum.p ...

  8. ps commad

    要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1)         ps :是显示瞬间进程的状态,并不动态连续: (2)         top:如果想对进 ...

  9. MWeb 1.3.7 发布!增加发布到 Wordpress 等支持 MetaWeblog API 的服务,如:Wordpress 博客、新浪博客、cnblogs、oschina。

    MWeb 1.3.7 版的新功能 增加发布到 Wordpress 等支持 Metaweblog API 的服务,目前经测试过的有: Wordpress 博客.新浪博客.cnblogs.oschina. ...

  10. PAT线性结构_一元多项式求导、按给定步长反转链表、出栈序列存在性判断

    02-线性结构1. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过100 ...