SQLの最適化

  • スロークエリログ
    • まずどのようなクエリがボトルネックになっているのかを調べる
    • 一定時間以上かかったクエリを記録するスロークエリログ機能を設定する

[mysqld]
log_slow_queries=slow.log
long_query_time=1
# long_queries_not_using_indexes <= indexを使用していないクエリを記録するオプション(開発時などに)

  • EXPLAIN構文
    • SQLチューニングの基本である、indexが適切に使われているかを確認する
      • mysql> EXPLAIN <対象SQL>
      • 出力される情報で「type: ALL」の場合、indexが設定されておらず全てを検査している
    • indexを作成する
      • mysql> ALTER TABLE ${テーブル名} ADD INDEX(カラム名);
      • 再度EXPLAINを実行、「type: ref」になればOK!