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

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. [转]dispatcher、redirect和chain三种result type的使用区别

    http://blog.163.com/zhangfei_jiayou/blog/static/562441782009826045248/ dispatcher:用于页面转发,页面跳转过程一直是同一 ...

  2. OC基础(4)

    NSString 类介绍及用法 结构体成员变量 对象和方法之间的关系 对象作为方法的参数连续传递 *:first-child { margin-top: 0 !important; } body &g ...

  3. 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射

    [Unity Shaders]学习笔记——SurfaceShader(四)用纹理改善漫反射 转载请注明出处:http://www.cnblogs.com/-867259206/p/5603368.ht ...

  4. Windows Azure - App Services

    1. 需要了解的概念:App Service Plan, Resource Group 2. Create an ASP.NET web app in Azure App Services 3. Cr ...

  5. 集合函数AVG,SUM,MAX,MIN

    需要计算这些值的平均值.使用函数AVG(),你可以返回一个字段中所有值的平均值. 假如你对你的站点进行一次较为复杂的民意调查.访问者可以在1到10之间投票,表示他们喜欢你站点的程度.你把投票结果保存在 ...

  6. Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作

    一:查看本地ssh服务 Linux系统下安装启动ssh服务,下面以CentOS版本Linux系统为例: 1.检查是否装了SSH包 rpm -qa |grep ssh 2.没有安装SSH直接YUM安装 ...

  7. C++三种内存分配方式

    从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.静态分配的区域的生命期是整个软件运行期,就是说从软件运行开始到软件终止退出.只 ...

  8. PayPal 开发详解(五):创建第一个应用,获取clientId和clientSecret

    1.创建APP 2.填写应用名称->创建应用 3.获取 clientId 和 clientSecret

  9. Nginx 开启 path_info功能

    server { listen ; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; roo ...

  10. 较好的IOS新闻客户端应用源码

    兼容性较好的新闻客户端应用源码,这个是一款国外新闻客户端源码,并且这款应用兼容性非常好的,可以很好地兼容iPhone和iPad的使用,而且应用的功能很多,新闻列表,上啦下拉刷新效果,评论列表,在线评论 ...