博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
group by 优化
阅读量:5301 次
发布时间:2019-06-14

本文共 838 字,大约阅读时间需要 2 分钟。

优化group by查询的时候,一般的会想到两个名词:松散索引扫描(Loose Index Scan)和紧凑索引扫描(Tight Index Scan),因为通过这两种索引扫描就可以高效快速弟完成group by操作。

 

松散索引扫描(Loose Index Scan):

  松散索引扫描只需要读取很少量的数据就可以完成group by操作,因而执行效率非常高。使用松散索引扫描需要满足以下条件:

  1.group by的字段需要在同一索引上,且满足前缀索引,且聚集函数的字段应该位于group by的字段后面.  索引index(a,b,c);   select max(c) from test group by a,b

  2.select字段中只能含有 min,max(如果同时存在min,max,则只能作用于同一字段),AVG(DISTINCT column),SUM(DISTINCT column),COUNT(DISTINCT column)

  3.如果查询中存在除了group by指定的列之外的其他部分,那么必须以常量的形式出现或者除了上面的聚集函数;      索引index(a,b,c);     select a,c from test where c = 3 group by a,b 或者 select a,avg( DISTINCT c) from test group by a,b;

 

紧凑索引扫描(Tight Index Scan)

  紧凑索引扫描可能是全索引扫描或者范围索引扫描,取决于查询条件。紧凑索引会取出满足条件的所有索引,然后才会进行分组. 一般会出现 using index,using where. 是否出现using where取决于是否有 where条件.

 

松散索引扫描个紧凑索引扫描的最大区别是是否需要扫描整个索引或者整个范围扫描。 

转载于:https://www.cnblogs.com/ironroot/p/7299476.html

你可能感兴趣的文章
css背景样式
查看>>
JavaScript介绍
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
C语言中求最大最小值的库函数
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>