MYSQL规范

一.DB应用规范
1.让数据库做它擅长的事
不在数据库中做运算 复杂运算移到程序中 使用简单sql
2.控制库表容量
单库不超过300个表 合理分表 按id date area等拆分 将历史数据与实时数据分表存放 不用的数据及时删除,删除后alter table tab engine=innodb|myisam 释放空间 避免全表扫时,扫描一些空块。
3.控制字段属性
表字段少而精 字段类型长度选择准确 查看存储类型范围 mysql> ? int 列的默认值最好不要用null,使用统一的默认值。
4.拒绝3B
Big SQL Big Transaction Big Batch 针对3种解决方法就是一个字 拆
5.尽量少用库的辅助功能
不使用触发器 尽量不使用过程 函数 视图

二.索引字段规范
1.索引的优缺点
“改善”查询速度 减慢DML操作(增删改) 索引是有开销的
2.合理使用索引
Innodb引擎一定要加主键索引 建议int or bigint
选择索引字段时,要选常在where条件中出现的且列中重复值较少的 举例:性别就不适合在OLTP业务上建索引 只有两个值 0 or 1 。
使用组合索引时,索引列的位置很重要,第一列尽量使用重复值少且常在where条件中用到的列 index(col1,col2) 如果where中用到col1 > n 或 between and 这种范围查询 则col1后面的列不会再走索引。
在写sql查询时,一定要 where column=value 方式 不要在value上使用函数和类型转换
字符字段加索引时 要使用前缀索引 举例:index(`name`(16));
尽量不要使用外键,约束问题在程序方面控制。

三sql编写规范
1.查询符合条件的数据
Select col1,col2 from tab where col1=10;
2.查询需要的字段
查询用到的字段 select col1,col2 from … where 避免使用select *
3. sql中使用like
Select col1,col2 from tab where col1 like ‘aaa%’; 如果col1上有索引会使用 尽量不要写成 like ‘%aaa%’;
4.避免负向查询
Where条件中不使用 not != <> not exists not in not like 等
5.少使用count(*)
Innodb引擎的表少使用count(1) 开销大 这种统计类sql应放到统计库上执行
6.分页查询
Select col1,col2 from tab limit m,n; m取值越大 查询越慢 推荐使用方式:select col1,col2 from tab where id>m limit n; select col1,col2 from tab where col1>( select col1 from tab where col2 between ‘x’ and ‘z’ limit m,1) limit 10;
7.用表连接代替子查询
Select tab1.col1,tab1.col2 from tab1 join tab2 where tab1.co1=tab2.coln and col2=33; 避免select col1,col2 from tab1 where col1 in (select coln from tab2 where colx=ppp) and col2=33;
8.执行时可用explain看执行计划
Explain extened select col1,col2 from tab where …. 比较不同的sql的执行计划 选取最优

四 命名规范
名称命名用_或字母开头 小写 长度不要超过30字符。避免使用库中保留的关键字
库名使用db_业务名称_库名
普通表名使用tb_模块名称_表名
统计表名使用stat_模块名称_表名
日志表名使用log_模块名称_表名
索引名字使用inx_表名_字段名称

五 升级规范
一定要写上需要升级的库名 、执行时间、 是否需要先停业务
对于新增表,需要有表和字段的描述,预计表的存储容量 建表时把相关的索引加上,等表到一定量时再加索引,锁表时分很长。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值