最近一直给项目组的开发人员进行SQL优化,发现他们对一些group by的高级都不是太会用。今天我就做几个测试,来演示rollup的用途。
Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。这个介绍是网上看到的,引用下 哈哈。
上面是基本的group by 大家好看数据结构啊
通过上面的2个例子。我们可以清楚的看到roll的规律了吧
那么rollup的效率怎么样呢,看看执行计划吧
执行计划的效率还是不错的