OracleのGROUP BY句

GROUP BY句を使用する場合オラクルの内部でソート処理が行われますが、10.2からデフォルトのソートアルゴリズムが変更されてます。

10.2以前はデフォルトがSORT(GROUP BY)だったのがHASH(GROUP BY)に変更されてます。

それが原因でGROUP BY句の対象となるレコードが大きい場合もしくはキーの値が同じような場合、HASシノニムが発生するみたいです。

「そんなバカな」と思うでしょ。僕もそう思いましたがどうも本当みたいです。

10gにしたときにソート系の実装を大分いじったようで、10.1とかSORTでバグかなり出てましたからね。いいなぁ。Oracleとかだとそんなバグでもあんまり怒られる事もないんやろなぁ。

HASH GROUP BY can give wrong result in Oracle 10.2
Oracle Internals