Oracle 一時テーブル: 一時データ ストレージの詳細
リレーショナル データベース管理の分野では、一時テーブルの作成はさまざまなデータ処理シナリオでの一般的な要件です。 Microsoft SQL Server では、DECLARE ステートメントを使用して一時テーブルを作成する構文は比較的単純です。ただし、Oracle データベースではアプローチが異なるため、さらに検討する必要があります。
Oracle は、グローバル一時テーブルとプライベート一時テーブルという 2 種類の一時テーブルを提供します。グローバル一時テーブルは、作成ステートメント内の GLOBAL TEMP キーワードによって表され、複数のユーザー セッションにわたって表示およびアクセスできます。一方、Oracle 18c で導入されたプライベート一時テーブルは作成セッション専用であり、パフォーマンスの最適化によく使用されます。
グローバル一時テーブルの作成
Oracle でグローバル一時テーブルを作成するには、次の構文を使用します:
<code class="language-sql">CREATE GLOBAL TEMPORARY TABLE 表名 (列定义) ON COMMIT [DELETE ROWS | PRESERVE ROWS]</code>
デフォルトでは、トランザクションがコミットされると、グローバル一時テーブルのデータが削除されます。ただし、ON COMMIT 句を使用すると、目的の動作を指定できます:
次の例を考えてみましょう:
<code class="language-sql">CREATE GLOBAL TEMPORARY TABLE sales_temp ( order_id NUMBER, quantity NUMBER ) ON COMMIT PRESERVE ROWS;</code>
プライベート一時テーブルの作成
Oracle 18c 以降で使用できるプライベート一時テーブルは、作成セッション内でデータをメモリに保存することでパフォーマンスを向上させます。これらは次の構文を使用して作成されます:
<code class="language-sql">CREATE PRIVATE TEMPORARY TABLE 表名 (列定义)</code>
これは例です:
<code class="language-sql">CREATE PRIVATE TEMPORARY TABLE order_temp AS SELECT order_id, product_id, quantity FROM orders WHERE order_date = '2023-08-22';</code>
メモと代替案
一時テーブルは特定の状況では貴重ですが、使用には注意が必要です。一時テーブルの作成と削除を頻繁に行うと、データベースにパフォーマンスのオーバーヘッドが発生する可能性があります。
一時テーブルの代わりに、インライン ビュー (CTE) を使用することもできます。これにより、1 つの SQL ステートメントで一時的な結果セットを作成できます。このアプローチにより、パフォーマンスが向上し、一時テーブルを個別に作成する必要性が軽減される可能性があります。
以上がOracle Database Managementにおけるグローバル一時表とプライベート一時表はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。