アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

ざっくりSQL入門 #10:一時テーブルを活用する

MySQLを前提に書いています。一部関数などは方言差がある場合もあるのでご注意ください。

今回は一時テーブルについて。

一時テーブルとは、普段使用しているテーブルとは異なり、その名の通り、一時的に保持されるテーブルです。
作成した一時テーブルはそのセッションでのみ使用可能で、セッションが閉じられるときに自動で削除されます。
複数のセッションが同時に同じ名前の一時テーブルをそれぞれで作成・使用することができます。

基本的な構文

以下の書き方で、結果セットを簡単に一時テーブル化することができます。

CREATE TEMPORARY TABLE 【一時テーブル名】
SELECT ...

このテーブルはセッション終了時に削除されますが、個人的には明示的に削除するのが好きです。

DROP TEMPORARY TABLE IF EXISTS 【一時テーブル名】

活用例

普通は一時テーブルを用いることなく対応可能でしょうが、
一時テーブルを活用することで、可読性や実行速度などが大幅に向上する場合があります。

(個人的に)ありがちな例を以下に記載します。

  • 複雑な集計を行い、その結果に対してさらに処理を加えたい場合
    • 何らかのスコア計算を行い、それに順位を付けたい、など
  • あるレコード群に対して、段階的に処理を加えたい場合
    • Aに該当するレコードにaの処理を加え、それ以外でBに該当するレコードにbの処理を加え…
  • 大規模なINSERTレコードを生成する場合
    • いくつかの複雑な条件を用いて一時テーブル上にINSERTしたいレコード群を構築していき、最後に一括でINSERTする