zoukankan      html  css  js  c++  java
  • group by 优化

    优化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条件.

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

  • 相关阅读:
    C#设计模式(2)——简单工厂模式
    C#设计模式(1)——单例模式
    静态变量与静态方法
    在服务器操作系统上使用TeamViewer
    51 nod 1439 互质对(Moblus容斥)
    51 nod 1495 中国好区间
    51nod 1103 N的倍数(抽屉原理)
    51 nod 1427 文明 (并查集 + 树的直径)
    51nod 1486 大大走格子(容斥原理)
    hihocoder 1388 fft循环矩阵
  • 原文地址:https://www.cnblogs.com/ironroot/p/7299476.html
Copyright © 2011-2022 走看看