4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQLでテンポラリテーブルの作成がやたらと遅いときの回避方法

4
Posted at

MySQL5.6でテンポラリテーブルを作る場合は、MyISAM指定で作ると速くなります。

以下は原因の推測です。
恐らく、MySQL5.5からデフォルトDBがMyISAMからinnodbに変わったのが原因のように思います。
テンポラリテーブルはMEMORYテーブルとして作成され、テンポラリテーブルのサイズ上限を超えるとMyISAMに自動変換される仕様にはなっていますが、ここが実はデフォルトDBなんじゃないかと思っています。
なので、MEMORYテーブルの内部構造はMyISAMで5.1以下時代は作られていたが、
5.5以上だとMEMORYテーブルの内部構造がinnodbになっていて、
これをメモリに乗せようとすることで、処理にやたらと時間がかかるようになってしまったのではないでしょうか。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?