ホームページ >データベース >mysql チュートリアル >Oracle Database Managementにおけるグローバル一時表とプライベート一時表はどのように異なりますか?

Oracle Database Managementにおけるグローバル一時表とプライベート一時表はどのように異なりますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-16 20:06:11627ブラウズ

How Do Global and Private Temporary Tables Differ in Oracle Database Management?

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 句を使用すると、目的の動作を指定できます:

  • 行の削除: 送信時にデータを削除します。
  • PRESERVE ROWS: データは送信後も残り、他のセッションがアクセスできるようになります。

次の例を考えてみましょう:

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。