关于数据库:MySQL分组优化

37次阅读

共计 723 个字符,预计需要花费 2 分钟才能阅读完成。

分组优化

在应用 group by 进行分组时,实际上也须要进行排序操作,与 order by 相比,group by 次要是多了排序之后的分组操作

group by 的实现有三种形式

  • 应用涣散索引扫描实现 group by
  • 应用紧凑索引扫描实现 group by

<!– more –>

应用涣散索引扫描实现 group by

MySQL 齐全利用索引扫描来实现 group by

在应用 explain 执行打算时 extra 字段中呈现 using index for group by 示意应用了涣散索引扫描实现的 group by 操作

须要满足的条件

  • group by 条件字段必须在同一个索引中最后面的间断地位
  • 在应用 group by 的同时,只能应用 min 和 max 这两个聚合函数
  • 如果用到了该索引中 group by 条件之外的字段条件时,必须以常量模式存在

应用紧凑索引扫描实现 group by

紧凑索引与涣散索引的区别次要在于须要在扫描索引的时候,读取所有满足条件的索引键,而后依据读取到的数据来实现 group by 操作失去相应的后果

MySQL 会先尝试应用涣散索引扫描实现 group by,当发现条件不满足时,才会尝试应用紧凑索引扫描

当 group by 条件字段并不间断或者不是索引前缀局部的时候,无奈应用涣散索引扫描,才会尝试应用紧凑索引扫描来实现

应用长期表实现 group by

MySQL 在进行 group by 操作的时候要想利用索引,必须满足 group by 的字段必须同时寄存于同一个索引,且该索引是一个有序索引,如果无奈找到适合的索引能够利用的时候,就不得不先读取须要的数据,而后通过长期表来实现 group by 操作

https://zhhll.icu/2021/ 数据库 / 关系型数据库 /MySQL/ 进阶 /28. 分组优化 /

本文由 mdnice 多平台公布

正文完
 0