MYSQL优化案例

来源:互联网 发布:淘宝网兜售野鸟 编辑:程序博客网 时间:2024/05/29 18:33

1、加索引
2、数字类型规范
3、加冗余字段
4、用in、union all 替换or
5、减少模糊查询字段
6、3张表以上SQL拆分
7、硬件扩展
8、其他

1.MySQL优化案例-加索引
这个不用列举具体例子了,给大家看下TMS的两张张表,这些都是优化的时候加上的索引,
索引可以解决95%的sql性能问题!

2. MySQL优化案例-数字类型规范
数字类型规范基本的有:
1.不要有隐形转换, 2.作为条件不要加引号
这里写图片描述

3. MySQL优化案例-加冗余字段
冗余字段是反范式的,有时候为了性能,不得不在性能和范式之间做个平衡
直接上表,如下如果不冗余起来,
主要问题表现在,
1、为了一个子单关联一张很大的表
2、查询的时候很多都要 max、group by、order by 等
想想都很害怕
这里写图片描述

3 . MySQL优化案例-减少模糊查询
有人说:业务需求不同意,查询慢总比服务器挂掉强吧!
理是这个理,但是我们也可以做更多。
1.比如运单号等 不支持模糊查询,必须精确查询。
2.如下面这种查询方式:先模糊查询单表,在把查出来的结果带入自定义做精确查询。
这里写图片描述

4 . MySQL优化案例-SQL拆分1
原则上3张表以上要进行拆分,分清主次
拆分之后的SQL语句一些逻辑放到应用层,如查询结果组合、查询结果排序
这里写图片描述
这里写图片描述
这里写图片描述

MySQL优化案例-SQL拆分2
处理步骤:
加索引、优化SQL语句等都无效的时候。。。
1.分析SQL语句,拆分出来某个查询条件,查询出单表数据集合
2.把数据集合作为查询条件再带入二次自定义查询语句
3.开启多线程,把多线程查询结果组合到返回前端的集合里面
这里写图片描述
这里写图片描述

5 . MySQL优化案例-硬件扩展
这种方法简单粗暴高效,直接上案例吧
这里写图片描述
这里写图片描述
这里写图片描述

6 . MySQL优化案例-其他
1、Limit加到 子查询里面
2、强制索引、全文索引
3、应用服务器和数据库服务器压力平衡
4、order by limit 放到每个子查询下面

0 0