勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLのTEMPORARY TABLE(テンポラリテーブル)で高速化を図る方法

   2024/05/18  MySQL データベース

MySQLで5000万件ぐらいデータが入っているテーブルから日本語検索しないといけないケースがあった。検索の際、非常に時間がかかるので対応方法が無いか調べたところTEMPORARY TABLE(テンポラリテーブル)を用いることで多少改善できた。以下に対応方法をメモ。

 

ソースコード

$sql = '
    CREATE TEMPORARY TABLE tmp_table
    SELECT *
    FROM aaa_table
    WHERE hogehoge LIKE "%検索文字列%"
';
$row = mysql_query($sql);
$sql = '
    SELECT *
    FROM tmp_table
    WHERE time < now()
';

 

リファレンス

https://dev.mysql.com/doc/refman/8.0/ja/create-temporary-table.html

 

参考サイト

https://pgmemo.tokyo/data/archives/11.html

 - MySQL データベース

  関連記事

MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法
MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法

MySQLで商品価格のような数値の値を3桁ずつのカンマ区切りで取り出したいという ...

MySQLで全国の市区町村のデータを入手し、抽出する方法
MySQLで全国の市区町村のデータを入手し、抽出する方法

都道府県と市区町村が連携したセレクトメニューを作成したかった。具体的には大阪府を ...

MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法

以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...

MySQLでランダムにデータを取得しつつページング機能も実装する方法
MySQLでランダムにデータを取得しつつページング機能も実装する方法

MySQLからデータを持ってくる際にランダムな表示を行ってほしいと言われた。ただ ...

MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法
MySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法

MySQLでオートインクリメントを使用せずにグループ毎で連番を割り振りたかった。 ...