Oracle(バージョン12.1.0.2.0)データベースでは再現できませんでしたが、非常に興味深い観察結果です。私はWindowsではなくOracleLinux6.5を使用していることに言及する必要があります。とにかく、この単純でありながら興味深いクエリのために、実行プランも投稿することをお勧めします。
実行プランを投稿していただきありがとうございます。これは、クエリの動作を非常によく説明しています。次に、最初の実行計画から説明します。
|* 2 | HASH JOIN | | 1 | 17 | 8 (0)| 00:00:01 |
| 3 | VIEW | | 2 | 14 | 4 (0)| 00:00:01 |
| 4 | SORT UNIQUE | | 2 | | 4 (50)| 00:00:01 |
| 5 | UNION-ALL | | | | | |
| 6 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 7 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 8 | VIEW | | 2 | 20 | 4 (0)| 00:00:01 |
| 9 | SORT UNIQUE | | 2 | | 4 (50)| 00:00:01 |
| 10 | UNION-ALL | | | | | |
| 11 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 12 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
ご覧のとおり、オプティマイザは左結合ではなく内部結合を選択します。これは、本来あるべき「HASHJOINOUTER」ではなく「HASHJOIN」によって示されます。
正直なところ、このようなバグについては(これまでのところ)何も聞いていなかったので、次のことをお勧めします。
- 文書化されていないパラメータが含まれている場合は、pfile/spfileを確認してください。
- これらのパラメータを設定するとパフォーマンスが向上する場合がありますが、多くの場合、「カルマは...」ということわざにあるように、予期しない実行/パフォーマンス動作が非常に悪い方法で発生する可能性があります。