一文读懂Mysql 优化之order by
- 驱动表与被驱动表概念
- 复合索引的三大原则
- 排序方式对比
- 索引排序
- 驱动表排序
- 临时表排序
- 排序算法
驱动表与被驱动表概念
- 当使用left join时,左表是驱动表,右表是被驱动表
- 当使用right join时,右表是驱动表,左表是被驱动表
- 当使用join(inner join) / where时,mysql会选择数据量比较小的表作为驱动表,大表作为被驱动表
可以使用explain执行计划,查询结果的第一行即为驱动表
复合索引的三大原则
假如索引有复合索引(a,b,c),复合索引字段顺序 a>b>c ,a为最左侧字段
- 最左匹配原则,如果查询条件缺失了索引的最左侧列,那么索引不生效
- 中间不可中断原则,如果中间定义的索引没有在where条件里面体现,那么后面的字段过滤将不会用到索引
- 范围中断原则,只要使用了范围查询,那么其右侧的索引都无法正常使用
select field from table where b="b" order by b,c