1.先看一个单表案例
有如下下数据表,只有主键id

执行sql【explain select id,n1 from tb where n2='f' and n4>'c' order by n3 desc limit 1;】
通过explain分析:

不光是ALL全表扫描,而且还产生了一次内部排序using filesort,效率及其底下。
那么如何建立索引呢?首先n2这个字段肯定是要建立索引的,可以用上等值,而且范围之后索引失效所以可以考虑按n2n3的顺序建立一个索引idx_n2_n3,或者按n2n3n4的顺序建立索引idx_n2_n3_n4。
那么我们先来尝试一种错误的情况,对了n2n4n3建立索引idx_n2_n4_n3。

执行sql【explain select id,n1 from tb where n2='f' and n4>'c' order by n3 desc limit 1;】

本文探讨了MySQL中单表查询的优化,强调了等值查询和排序索引的重要性,通过案例展示了错误索引导致的效率低下。接着分析了两表连接的效率与表驱动顺序的关系,说明了小结果集驱动大结果集的原则,并建议在连接字段建立索引。最后,讨论了三表连接的优化,强调了驱动表的选择和索引的必要性。
最低0.47元/天 解锁文章
1511

被折叠的 条评论
为什么被折叠?



