mysql军规
- 1. 尽量不在数据库做运算
- 2. 单库不超过300~400个表
- 3.单表字段上线控制在20~50个
- 3.将字符转化为数字
- 4.enum或set![在这里插入图片描述](https://img-blog.csdnimg.cn/fc9ce396d1cc4f4a88a17cb18465fa3b.png)
- 5.避免使用null字段
- 6.少用并拆分TEXT/BLOB
- 7.不在索引列进行数学运算或凼数运算
- 8.尽量不使用外键
- 9.尽量丌用 SELECT *
- 10.同一字段,将or改写为in(),不同字段,将or改为union
- 11. 避免负向查询和% 前缀模糊查询
- 12. 减少COUNT(*)
- 13. LIMIT的高效分页
- 14. 高幵发DB丌建议进行两个表以上的JOIN![在这里插入图片描述](https://img-blog.csdnimg.cn/09ce4e56b967408a86033971d525e9a7.png)
- 15.GROUP BY 去除排序![在这里插入图片描述](https://img-blog.csdnimg.cn/b8233452852d4aa19718cde00a309c26.png)### 16.统一命名规范
1. 尽量不在数据库做运算
举例: MD5()/order by rand()
2. 单库不超过300~400个表
3.单表字段上线控制在20~50个
3.将字符转化为数字
举例: 用无符号int存储ip,而非char(15)
4.enum或set
5.避免使用null字段
6.少用并拆分TEXT/BLOB
VARCHAR(65535)==>64K (注意UTF-8)
7.不在索引列进行数学运算或凼数运算
举例: where id+1 = 333 或 where id = 3333-1
8.尽量不使用外键
9.尽量丌用 SELECT *
10.同一字段,将or改写为in(),不同字段,将or改为union
注意控制IN的个数,建议n小于200
11. 避免负向查询和% 前缀模糊查询
12. 减少COUNT(*)
13. LIMIT的高效分页
LIMIT原理: Limit 10000,10 偏移量越大越慢
推荐分页:
Select * from table WHERE id>=23423 limit 11; #10+1 (每页10条)
Select * from table WHERE id >= ( select id from table limit 10000,1 ) limit 10;