1行だけのテーブルです。これは Oracle のCharles Weissによって作成され、Oracle Data Dictionary の内部ビューに結合するためのテーブルを提供します。
Oracle Data Dictionary の基礎となるオブジェクトとして DUAL テーブルを作成しました。それ自体が表示されることは決して意図されていませんでしたが、代わりに、クエリが予想されるビュー内で使用されていました。アイデアは、DUAL テーブルに JOIN を実行し、テーブルの 1 行ごとに結果に 2 行を作成できるというものでした。次に、GROUP BY を使用して、結果の結合を要約し、DATA エクステントと INDEX エクステントのストレージの量を示すことができます。DUAL という名前は、1 つの行から 2 つの行を作成するプロセスに適しているように思われました。
デュアルで活用できる優れた機能がたくさんあります。これを使用して、数値のリストを生成します。例えば
SELECT LEVEL just_a_column
FROM dual
CONNECT BY LEVEL <= 365
また、10g の時点で、Oracle は独自の用途でデュアルを認識しており、9i 以前の論理読み取り/全テーブル スキャンはアプリケーションから削除されていることに注意してください。10g にアップグレードすると、デュアルを使用するアプリケーションのパフォーマンスが大幅に向上しました。(たとえば、デュアルから sysdate を選択します)。
プランの例の説明: 10g 以降では、デュアルは魔法のテーブルです。デュアルから sysdate を選択すると、プランは次のようになります。
sql> select sysdate from dual;
SYSDATE
---------
12-DEC-02
Execution Plan
-----------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------