MySQL数据库开发的36条军规

核心军规

  • 尽量不在数据库做运算
  • 控制单表数据量 纯INT不超过10M条,含Char不超过5M条
    保持表身段苗条
  • 平衡范式和冗余
  • 拒绝大SQL,复杂事务,大批量任务

字段类军规

  • 用好数值字段,尽量简化字段位数
  • 把字符转化为数字
  • 优先使用Enum或Set
  • 避免使用Null字段
  • 少用并拆封Text/Blob
  • 不在数据库中存图片

索引类军规

  • 谨慎合理添加索引
  • 字符字段必须建立前缀索引?
  • 不在索引列做运算
  • 自增列或全局ID做InnoDB主键
  • 尽量不用外键

SQL类军规

  • SQL尽可能简单
  • 保持事务连接短小
  • 尽可能避免使用SP/Trigger/Function
  • 尽量不用Select *
  • 改写Or为IN()
  • 改写Or为Union
  • 避免负向查询和%前缀模糊查询
  • Count不要使用在可Null的字段上面
  • 减少Count(*)
  • Limit高效分页,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10
  • 使用Union ALL 而不用Union
  • 分解链接,保证高并发
  • Group By 去除排序
  • 同数据类型的列值比较
  • Load Data导入数据,比Insert快20倍
  • 打散大批量更新,尽量凌晨操作

约定类军规

  • 隔离线上线下
  • 禁止未经DBA认证的子查询
  • 永远不在程序段显式加锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值