PostgreSQLとMySQLのテンポラリテーブル入門

DB

データベースを扱う際、一時的にデータを保存したい場面がよくあります。
例えば、、、

  • 複雑な計算結果を一時的に保存して、繰り返し参照したい
  • クエリのパフォーマンスを向上させるために、一時的にデータを整理したい
  • バッチ処理で中間データを扱いたい

このような場合に便利なのが「テンポラリテーブル(Temporary Table)」です。
PostgreSQLとMySQLのテンポラリテーブルの基本について解説します。

テンポラリテーブルとは?

テンポラリテーブルは、一時的にデータを保存するためのテーブルです。
通常のテーブルとは異なり、セッション(接続)が終了すると自動で削除されます。

主な特徴:
✅ 一時的なデータを保存できる
✅ 通常のテーブルとは異なり、DBに永続的に残らない
✅ 同じ名前の通常テーブルが存在していても、影響を受けない

具体的な利用シーン:
・一時的なデータ集計
・クエリの高速化(JOINやサブクエリを回避する)
・バッチ処理の中間データ保存

では、PostgreSQLとMySQLの具体的な使い方を見ていきましょう。

PostgreSQLのテンポラリテーブル

作成方法

PostgreSQLでは、
CREATE TEMP TABLE または CREATE TEMPORARY TABLE を使います。

CREATE TEMP TABLE temp_users (
    id SERIAL PRIMARY KEY,
    name TEXT
);

データの挿入・参照

INSERT INTO temp_users (name) VALUES ('Alice'), ('Bob');
SELECT * FROM temp_users;

削除方法

  • セッション終了時に自動削除
  • 明示的に削除する場合は DROP TABLE
    (テンポラリテーブルに関わらずテーブルを削除する時に使用する)
DROP TABLE temp_users;

ON COMMIT オプション

PostgreSQLでは、ON COMMIT を指定すると、トランザクション終了時の挙動を制御できます。

CREATE TEMP TABLE temp_orders (
    id SERIAL PRIMARY KEY,
    total NUMERIC
) ON COMMIT DROP;
  • ON COMMIT DELETE ROWS: トランザクション終了時にデータのみ削除
  • ON COMMIT DROP: トランザクション終了時にテーブル自体を削除

MySQLのテンポラリテーブル

作成方法

MySQLでは、CREATE TEMPORARY TABLE を使います。

CREATE TEMPORARY TABLE temp_users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);

データの挿入・参照

INSERT INTO temp_users (name) VALUES ('Alice'), ('Bob');
SELECT * FROM temp_users;

削除方法

  • セッション終了時に自動削除
  • 明示的に削除する場合は DROP TABLE
DROP TABLE temp_users;

MySQL特有の注意点

  • 同名の通常テーブルがある場合、テンポラリテーブルが優先される
  • 別のセッション(接続)からは見えない

PostgreSQL vs MySQL テンポラリテーブルの違い

PostgreSQLMySQL
作成方法CREATE TEMP TABLECREATE TEMPORARY TABLE
削除タイミングセッション or トランザクション終了時セッション終了時
ON COMMIT オプションあり (DROP, DELETE ROWS)なし
永続テーブルと同名可否NG(スキーマが異なる)OK(TEMP優先)

まとめ

PostgreSQLとMySQLのテンポラリテーブルには、似ている点と異なる点があります。

🔹 共通点

  • 一時的なデータ保存ができる
  • セッション終了時に削除される

🔹 違い

  • PostgreSQLは ON COMMIT でトランザクションごとの動作を制御できる
  • MySQLでは通常テーブルと同じ名前のテンポラリテーブルを作成可能

どちらも有名なデータベース管理システム(DBMS)ですが、
異なる部分もあるため、実際に動かしながら覚えていくと良いと思います!

タイトルとURLをコピーしました