6
8

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の複合インデックスを貼るコツ

Last updated at Posted at 2018-02-06

ちょうど業務で大量のデータが入っているMySQLのパフォーマンスチューニングをやる機会があったので、備忘録として残しておこう。経験則なので、間違っている部分があるかもしれない。

  • MySQLは1テーブルにつき1つのインデックスを使用するのでWHERE条件とORDER BY条件が異なる場合はいずれか一つが使われる(実行計画のKeyとPossible keyをみるとわかる)
  • 複合インデックスの対象カラムはWHERE条件、ORDER BY条件の順に定義する
  • カーディナリティの高いカラムを複合インデックスに含めるのが良いが、WHERE条件、ORDER
    BY条件にあるカラムすべてを含めずともそれなりに性能は向上する
  • 複合インデックスはカラムが定義された順に検索されるので、1番目のカラムにはもっとも使用頻度の高いカラムを設定する

検索・一覧表示画面は一般的にWHERE条件とORDER BY条件が複雑に組み合わさっているので、複合インデックス前提で設計するのが良いと思った。

ここに答えがあった。さすが日本男児だ。
http://nippondanji.blogspot.com/2008/12/2008.html

6
8
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
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?