Mysql复杂查询语句的优化,你会怎么做?

复杂SQL优化方案:

1,使用EXPLAIN关键词检查SQL。EXPLAIN可以帮你分析你的查询语句或是表结构的性能瓶颈,EXPLAIN 的查询结果显示帮你分析你的索引主键被如何利用的,你的数据表是如何被搜索和排序的,是否有全表扫描等;

2,查询的条件尽量使用索引字段,如某一个表有多个条件,就尽量使用复合索引查询,复合索引使用要注意字段的先后顺序。

3,多表关联尽量用join,减少子查询的使用。表的关联字段如果能用主键就用主键,也就是尽可能的使用索引字段。如果关联字段不是索引字段可以根据情况考虑添加索引。

4,尽量使用limit进行分页批量查询,不要一次全部获取。

5,绝对避免select *的使用,尽量select具体需要的字段,减少不必要字段的查询;

6,尽量将or 转换为 union all。

7,尽量避免使用is null或is not null。

8,要注意like的使用,前模糊和全模糊不会走索引。

9,Where后的查询字段尽量减少使用函数,因为函数会造成索引失效。

10,避免使用不等于(!=),因为它不会使用索引。

11,用exists代替in,not exists代替not in,效率会更好;

12,避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤,这个处理需要排序,总计等操作。

你可能感兴趣的:(Mysql复杂查询语句的优化,你会怎么做?)