| 版本 | 狀態 |
|---|---|
| 7.3.4 ~ 9.2.0 | 不存在 |
| 10.1.0 | 不存在 |
| 10.2.0 / 11.1.0 | 引入,默認 TRUE,可 ALTER SESSION/SYSTEM 修改 |
SORT (memory/disk) 統計。0 sorts。參數 _gby_hash_aggregation_enabled=TRUE(默認)啟用 Hash 聚合;設為 FALSE 退回 Sort 聚合。
-- 建表並收集統計 CREATE TABLE t AS SELECT * FROM dba_users; ANALYZE TABLE t COMPUTE STATISTICS; -- CBO 模式下默認 Hash Unique SELECT DISTINCT password FROM t; -- Plan: HASH UNIQUE, 0 sorts -- 關閉 Hash 聚合 ALTER SESSION SET "_gby_hash_aggregation_enabled" = FALSE; SELECT DISTINCT password FROM t; -- Plan: SORT UNIQUE, 1 sorts (memory)
10gR2 中 Hash Group By 存在哈希碰撞導致結果不準確的 Bug(如 ORA-00600 [32695])。臨時規避:ALTER SESSION SET "_gby_hash_aggregation_enabled"=FALSE; 或在參數文件中永久關閉。
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc DESCRIB
FROM sys.x$ksppi x, sys.x$ksppcv y
WHERE x.inst_id = USERENV('Instance')
AND y.inst_id = USERENV('Instance')
AND x.indx = y.indx
AND x.ksppinm LIKE '%gby%';