对规范的遵守可用二八原则,不要教条。为满足实际需求 可忽视部分规范。

1.索引规范
*目标
|--利用最小的索引成本找到需要的行记录 *原则
|--做前缀匹配
|--选择区分度高的列做前缀索引列
|--尽量使用重复索引 与where条件匹配
|--避免重复索引
|--索引列尽量包含 group by、order by所涉及的列
`--查询结果比较大时 考虑索引覆盖 2.SQL规范
*原则
|--避免大事务 减少等待和竞争
|--不要使用* 使用具体列名
|--遇到分页查询 使用延迟关联解决(如果有打offset,可先选取ID,然后用主键id关联)
|--避免多表查询 避免join
|--IN元素禁止超过300个
|--避免%前缀做模糊查询,不走索引
|--不要一次更新大量数据(>30000)
|--尽量使用union或in 代替or
|--避免使用子查询 尽量使用join
`--不使用负向查询 not in/like 使用in 反向代替 3.DDl规范
*前提
|--DDL会锁表,评估锁表给业务系统带来的影响 *原则
|--所有变更提前一天提交
|--日常变更工作日下班后,重大变更时间沟通后确定
|--所有DDL变更 需和研发沟通 审核后再提交
`--所有新上线的表必须确定索引后才可上线 4.表的设计规范
*原则
|--使用innodb存储引擎,表的结尾必须是Engine=innodb Auto_increment=1 Default Charset=uft8mb4
|--表必须带有物理主键
| |--id int(10) unsigned primary key not null auto_increment
| |--id bigint(19) unsigned primary key not null auto_increment
| |--int(M) M 表示最大显示宽度,和数字位数也无关系。int(3),int(8) 在磁盘上都是占用 4 btyes 的存储空间
| `--预估数据会无限增加的表,主键一律所以用Bigint(19) unsigned
|--禁止使用字符做主键
|--禁用联合主键
|--不在数据库中存储图片 文件等大数据
`--禁止使用分区表,定期创建分区表会给系统运维造成隐患 5.列设计规范
*原则
|--尽量减少存储空间
|--尽量使用数值类型+unsigned
|--禁用blob/text字段
|--禁用NULL值,建议在定义时都加上默认值
| |--NULL字段很难查询优化
| |--NULL字段的复合索引无效
| `--NULL字段的索引需要额外空间
|--禁止使用外键
|--使用unsigned存储非负数
`--varchar(N) N表示的是字符数不是字节数。
|--Mysql中一个表中所有varchar字段最大长度和是65535个字节
`--进行排序和创建临时表时,会使用N的长度申请内存 6.命名规范
*规范
|--库/表/列/索引名称一律小写
|--命名不要超过32个字符
|--索引
| |--格式为idx_列名缩写
| `--唯一索引 uniq_列名缩写
`--做到见名知意

mysql数据库开发规范的更多相关文章

  1. MySQL数据库开发规范知识点

    前言: 设计规范更多的是为了确保数据库设计的合理性.为了项目最终的协调稳定性,而命名规范则更多的是为了确保设计的正式和统一. 约定优先于配置(Convention Over Configuration ...

  2. MySQL数据库开发规范-EC

    最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库.今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例.因为规范大部分还是 ...

  3. Mysql 数据库开发规范

    设计范式参看,DDL与DDL 库表基础规范 1.注释 每个表要添加注释,对 status 型需指明主要值的含义,如”0-离线,1-在线” 2.表的字段数量 单表字段数一般考虑上限为 30左右,再多的话 ...

  4. PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))

    PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...

  5. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  6. MySQL 数据库开发的 36 条军规

    MySQL 数据库开发的 36 条军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 ...

  7. MongoDB 数据库开发规范

    MongoDB 数据库开发规范 转载自-落雨_ https://developer.aliyun.com/article/255536 简介: mongoDB库的设计 mongodb数据库命名规范:d ...

  8. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  9. 【转】拍拍网2015年mysql最新开发规范

    1.命名规范 (1)库名.表名.字段名必须使用小写字母,并采用下划线分割. (2)库名.表名.字段名禁止超过32个字符. (3)库名.表名.字段名必须见名知意.命名与业务.产品线等相关联. (4)库名 ...

随机推荐

  1. Ubuntu12.04配置静态ip地址

    Ubuntu12.04配置静态ip地址 $sudo gedit /etc/network/interfaces 原有内容只有如下两行: auto lo iface lo inet loopback 向 ...

  2. chrome 修改标签页

    插件名称:New Tab Redirect 标签格式:"file:///home/user/index.html"

  3. [AFUI]App Framework Plugins

    ---------------------------------------------------------------------------------------------------- ...

  4. MPush开源消息推送系统:简洁、安全、支持集群

    引言由于之前自己团队需要一个消息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理这一套代码,最近 ...

  5. eclipse 弹出智能提示、代码自动换行

    在eclipse 中编写java 程序时,为了快速查找变量或搜索方法调用,在智能窗口的帮助下,程序的编写速度会更快,但eclipse 默认下并不弹出智能窗口,这就需要自己进行配置,设置的步骤如下: 打 ...

  6. 跟我学 NHibernate (三)

    在使用 NHibernate 时,一定要将Mapping 映射文件,也就是 xml 文件的编译方式设置成 嵌入式,这是因为在 NHibernate 启动时,它会主动的到项目的启动目录中寻找 被设置为嵌 ...

  7. [转载]word尾注插入参考文献——前人经验+自己总结

    1. 以尾注的方式插入第一个参考文献. 将光标定位于word文档中将要插入参考文献的位置,按“插入/引用/脚注和尾注”.出现一菜单,选择“尾注”,“文档结尾”,编号格式为“1,2,3”.按“插入”按钮 ...

  8. Chrome调试(debugger)总是进入paused in debugger状态

    在通过Chrome浏览器进行web前端开发时,我们会经常用到Chrome自带的debugger工具,但是经常按完快捷键(F12)后,页面会进入 paused in debugger状态,需要点击右上角 ...

  9. JS常用的设计模式(14)—— 备忘录模式

    备忘录模式在js中经常用于数据缓存. 比如一个分页控件, 从服务器获得某一页的数据后可以存入缓存.以后再翻回这一页的时候,可以直接使用缓存里的数据而无需再次请求服务器. 实现比较简单,伪代码: var ...

  10. poj1019_Number_Sequence

    这题目关键是打表,haha[k]数组表示的是S1S2..Sk该串结尾所在的位置.然后用n去找n所在的k值,此时haha[k-1]<n<=haha[k].然后再算出从haha[k]位置到n一 ...