提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
多表查询优化
驱动表结论
1.外连接
左外连接: 一般来说:左表为驱动表,右边为被驱动表
2.内连接
对于内连接来讲,如果表的连接条件中只能有一个字段有索引,则有索引的字段所在的表会被作为被驱动表出现。
对于内连接来说,在两个表的连接条件都存在索引的情况下,会选择小表作为驱动表。“小表驱动大表”
join语句原理
子查询优化
子查询执行效率不高的原因
优化
在MYsql 中,可以使用(JOIN )查询代替子查询,性能会更好
ORDER BY优化
排序优化
案例
1. 创建索引
- CREATE INDEX idx_age_classid_name ON student (age,classid,NAME);
2. 不限制,索引失效
- EXPLAIN SELECT SQL_NO_CACHE * FROM student ORDER BY age,classid;
优化器优化策略:查询所有记录,如果走所以索引排序,还需要全部记录回表操作,所以不如全表扫描,加入内存再进行排序快.
3.增加limit过滤条件,----使用上索引了
- EXPLAIN SELECT SQL_NO_CACHE * FROM student ORDER BY age,classid LIMIT 10;
4.不用回表覆盖索引,----使用上索引了
- EXPLAIN SELECT SQL_NO_CACHE age,classid,name,id FROM student ORDER BY age,classid;
小结
filesort算法:双路排序和单路排序
GROUP BY优化
分页查询优化
|