MySQLのTemporary table
現場のSQLの中に、CREATE TEMPORARY という文をいくつか見かけたので、「一時テーブル」について勉強してみました。
Temporary Tableはセッションを抜けると自動的にDropされる。
異なるセッションのTemporary Tableは別々のものと扱われる。
Temporary Table(一時テーブル)について - 十番目のムーサ
*1
テンポラリテーブルはそのサイズがtmp_table_size以下であればMEMORYテーブルとしてメモリ上に作成され、tmp_table_sizeを超えるとISAMテーブルとしてディスクに書き出されます。
MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記
*2
MEMORYテーブルの大きさはmax_heap_table_sizeによっても制約されるため、tmp_table_sizeを大きくする場合は同時にmax_heap_table_sizeも大きくします。
MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記
*3
クエリが最適化されていない場合は、大きなテンポラリテーブルが作られてしまいます。テンポラリテーブルがtmp_table_sizeやmax_heap_table_sizeに割当のサイズを超える場合は、「Created_tmp_tables」のメモリ上で収まらずに「Created_tmp_disk_tables」としてディスクに書かれてしまいます。
MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記
*4
CREATE TEMPORARY TABLE tmp1
SELECT * FROM test_dt
WHERE item_name like '%検索文字列%'