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

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をコピーしました