一、中心军规
- 不在数据库做运算:cpu盘算务必移至营业层
- 掌握单表数据量:单表纪录掌握在1000w
- 掌握列数目:字段数掌握在20之内
- 均衡范式与冗余:为进步效力捐躯范式设想,冗余数据
- 谢绝3B:谢绝大sql,大事物,大批量
二、字段类军规
- 用好数值范例
tinyint(1Byte)
smallint(2Byte)
mediumint(3Byte)
int(4Byte)
bigint(8Byte)
bad case:int(1)/int(11)
- 字符转化为数字
用int而不是char(15)存储ip
- 防止运用NULL字段
NULL字段很难查询优化
NULL字段的索引须要分外空间
NULL字段的复合索引无效
- 罕用text/blob
varchar的机能会比text高许多
着实防止不了blob,请拆表
- 不在数据库里存图片
三、索引类军规
- 郑重合理运用索引
改良查询、减慢更新
索引肯定不是越多越好(能不加就不加,要加的肯定得加)
掩盖纪录条数过量不适合建索引,比方“性别”
- 字符字段必需建前缀索引
- 不在索引做列运算
bad case:
select id where age +1 = 10;
- innodb主键引荐运用自增列
主键竖立聚簇索引
主键不该该被修正
字符串不该该做主键
假如不指定主键,innodb会运用唯一且非空值索引替代
- 不必外键
请由顺序保证束缚
四、sql类军规
- sql语句尽量简朴
一条sql只能在一个cpu运算
大语句拆小语句,削减锁时候
一条大sql能够堵死全部库
- 简朴的事件
事件时候尽量短
bad case:
上传图片事件
- 防止运用trig/func
触发器、函数不必
客户端顺序取而代之
上面是我整顿给人人的MySQL"军规",愿望以后会对人人有协助。
相干文章:
mysql基础语法
给Myql建立索引
mysql的一些高等用法
以上就是MySQL"军规"的细致内容,更多请关注ki4网别的相干文章!