一文读懂Mysql 优化之order by【百万乃至千万数据查询优化推荐】

一文读懂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  

你可能感兴趣的:(数据库系列,mysql,数据库)