ORALCE hash group by 和 sort group by
时间: 2023-11-21 08:53:58 浏览: 204
ORACLE数据库中的GROUP BY操作可以通过HASH GROUP BY和SORT GROUP BY两种方式实现。在10g以前,GROUP BY是通过按照GROUP BY中的列对记录进行排序实现的。而在10g以后,HASH GROUP BY通过在读取表时将聚合计算在散列表中避免了排序,理论上比SORT GROUP BY速度更快并消耗更少的内存。然而,HASH GROUP BY的初始实现存在很多bug,在11.1.0.7和10.2.0.4版本发布后基本解决了。如果遇到了和HASH GROUP BY方法相关的问题,可以尝试关闭HASH GROUP BY,通过参数_GBY_HASH_AGGREGATION_ENABLED设置为FALSE来禁用HASH GROUP BY。如果在同一个表达式中使用GROUP BY和ORDER BY,优化器通常会决定使用SORT GROUP BY(而不是HASH GROUP BY),因为SORT GROUP BY会按照顺序返回记录。在10g以前的版本,GROUP BY操作通常会按照排序的顺序返回记录,因此ORDER BY子句事实上不起什么作用。然而,从10g以后,ORDER BY会抑制HASH GROUP BY方法的使用,因此可能会降低性能。
阅读全文