分组优化

在运用group by进行分组时,实际上也需求进行排序操作,与order by比较,group by主要是多了排序之后的分组操作

group by的完结有三种方式

  • 运用松懈索引扫描完结group by

  • 运用紧凑索引扫描完结group by

运用松懈索引扫描完结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操作

zhhll.icu/2021/数据库/联系…

本文由mdnice多平台发布

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。