mysqlクエリーチューニング

最近、mysqlのクエリーチューニングをぼちぼちやっているのですが、注意していること。

1.CURRENT_DATEとか現在日時を取得する関数は使わない。 クエリーキャッシュのヒット率を上げるようなチューニングをしているのですが、CURRENT_DATEとかNOWとかその都度値が変わるようなものがクエリー内にあった場合、キャッシュに入ってくれないみたい。 ので、クエリ文生成側で準備したほうがいい。

2.インデックスのkey_lenに注意。 速度を上げる為にインデックスを使っていても、key_lenが長いとやや遅くなるみたい。 インデックス対象のフィールドのデータ長は短く。

3.テンポラリが作られてしまう場合、あらかじめテーブルを準備。 EXPLAIN SELECT 〜 を使えば、インデックスがどういう風に使われているかとか分かるのだけども、テンポラリテーブルを作ってしまっている場合、あらかじめテーブルを準備したほうがいいのだろうな。

ってかもっと上位レイヤでキャッシュ化したいな。 Cache_Lite_Function みたいな仕組みを導入すればいいのかな。