ざっくりSQL入門 #10:一時テーブルを活用する
※MySQLを前提に書いています。一部関数などは方言差がある場合もあるのでご注意ください。
今回は一時テーブルについて。
一時テーブルとは、普段使用しているテーブルとは異なり、その名の通り、一時的に保持されるテーブルです。
作成した一時テーブルはそのセッションでのみ使用可能で、セッションが閉じられるときに自動で削除されます。
複数のセッションが同時に同じ名前の一時テーブルをそれぞれで作成・使用することができます。
基本的な構文
以下の書き方で、結果セットを簡単に一時テーブル化することができます。
CREATE TEMPORARY TABLE 【一時テーブル名】 SELECT ...
このテーブルはセッション終了時に削除されますが、個人的には明示的に削除するのが好きです。
DROP TEMPORARY TABLE IF EXISTS 【一時テーブル名】
活用例
普通は一時テーブルを用いることなく対応可能でしょうが、
一時テーブルを活用することで、可読性や実行速度などが大幅に向上する場合があります。
(個人的に)ありがちな例を以下に記載します。
- 複雑な集計を行い、その結果に対してさらに処理を加えたい場合
- 何らかのスコア計算を行い、それに順位を付けたい、など
- あるレコード群に対して、段階的に処理を加えたい場合
- Aに該当するレコードにaの処理を加え、それ以外でBに該当するレコードにbの処理を加え…
- 大規模なINSERTレコードを生成する場合
- いくつかの複雑な条件を用いて一時テーブル上にINSERTしたいレコード群を構築していき、最後に一括でINSERTする