mysql|一時テーブル
非常に大きなテーブルを操作する場合、大量のデータの小さなサブセットを取得するために多くのクエリを実行する必要がある場合があります。これらのクエリをテーブル全体に対して実行する代わりに、毎回必要な少数のレコードを MySQL に検索させることができます。一時テーブルにレコードを選択してから、それらのテーブルに対してクエリを実行する方が速い場合があります。
一時テーブルの作成は簡単です。通常の CREATE TABLE ステートメントに TEMPORARY キーワードを追加します。
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
一時テーブルは次のようになります。 MySQL への接続中に存在します。切断すると、MySQL は自動的にテーブルを削除し、使用されていたスペースを解放します。もちろん、接続したままテーブルを下ろしてスペースを空けることもできます。
DROP TABLE tmp_table
tmp_table という名前の一時テーブルを作成するときに、tmp_table という名前のテーブルがデータベースにすでに存在する場合、一時テーブルは非一時テーブル tmp_table をマスク (非表示) する必要があります。
一時テーブルを HEAP テーブルとして宣言する場合、MySQL ではメモリ内に作成するように指定することもできます:
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP
HEAP テーブルはメモリに保存されるため、そのテーブルに対して実行するクエリは、ディスク上の一時テーブルよりも高速になる可能性があります。ただし、HEAP テーブルは通常のテーブルとは若干異なり、独自の制限があります。詳細については、MySQL リファレンス マニュアルを参照してください。
前に提案したように、一時テーブルをテストして、大規模なデータベースに対してクエリを実行するよりも実際に速いかどうかを確認する必要があります。データのインデックスが適切に作成されている場合、一時テーブルはまったく高速ではない可能性があります。