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

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. JAVA·多线程:创建线程的两种方式

    1.–扩展java.lang.Thread类 package multiThread; public class Thread02extThread { public static void main ...

  2. TFS客户端登录用户修改

    1.操作环境: Windows 10 Pro Visual Studio 2013 TFS客户端 2.操作背景 安装完成TFS系统后,使用administrator在客户端进行登陆测试(已勾选保存用户 ...

  3. JFrame 不规则窗体

    效果截图: 这几天静心学java,由于学的不是很好,也没有什么有什么可以作品,但是毕竟也算刚开始认真学,也遇到了好多问题: 首先 1. JFrame的无边框设置:JFrame.setUndecorat ...

  4. 慕课网-安卓工程师初养成-2-11 Java常量

    来源:http://www.imooc.com/code/1256 所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 语法:final 常量名 = 值; 程序中使 ...

  5. 学习总结 java 数据库 ResultSet 、PreparedStatement

    package com.hanqi.test; import java.sql.*; public class jdbcTest { public static void main(String[] ...

  6. 关于TCP协议握手的那些事儿

    旁白 今天面了下鹅场的后台技术开发,面试官问了我关于TCP连接协议的3次握手和断开连接协议的4次握手的问题.因为之前看过TCP的连接和断开处理,但是印象没有那么深刻.我想主要原因是一直重复简单的记忆, ...

  7. git gc

    git gc 有时候当你运行一些git命令(比如git pull)的时候,会有如下提示: 1 2 Auto packing the repository for optimum performance ...

  8. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  9. Use BEC to do mobile phone forensics

    Belkasoft Evidence Center makes me very impressed that it supports lots of evidence type. I have to ...

  10. 再论App的安全性

    现代人早已脱离不了智能手机,几乎人手一机,常见人边走边滑,着实危险.大家用手机App购物,用网银App付费,用股票App下单炒股,太方便了所以成了家常便饭. 没错,就是因为太方便,所以大多只会留意好不 ...