LoginSignup
0
0

More than 1 year has passed since last update.

【MySQL】はじめてのクエリチューニング vol.1 インデックス作成のメリット・デメリット

Last updated at Posted at 2020-01-31

インデックス作成のメリット・デメリットについて記します
mysql.jpg

目次

  1. メリット

  2. デメリット

  3. インデックス作成の目安

メリット

1.検索(SELECT)が速くなる

特定の行を高速で検索する事が出来ます

JOINの結合条件、WHERE、ORDER BYで指定されているカラムのカーディナリティが高い(値の種類が多い)場合に力を発揮

プライマリーキー(一意キー)の場合は最も効果的

環境によリますが、カーディナリティが高いカラムを指定してインデックスを作成し100000件のデータに検索をかけた場合、処理速度が95%ほど改善されたりします

クエリチューニングに欠かせない複合インデックスについては別記事で
https://qiita.com/okasir4444/items/4024b8152832443fae64

デメリット

1.検索以外の処理が遅くなる

更新・削除・挿入の処理が遅くなります

更新(UPDATE)・・インデックス変更のためのオーバーヘッドが加わる(更新対象カラムが含まれるインデックスのみ)

削除(DELETE)・・インデックス変更のためのオーバーヘッドが加わる(全てのインデックスが対象)

挿入(INSERT)・・更新・削除とちがい、WHERE句の処理もないのでインデックスの恩恵が受けられない&インデックス変更のためのオーバーヘッドが加わる(全てのインデックスが対象)

2.データベースの容量を圧迫する

もともとのテーブル以外にインデックスを作成するのでデータ量はおのずと増えてしまう

インデックス作成の目安

以下が大まかな目安

・絞り込んだ結果のレコード数が全体の5%以下

・レコード数が1万件以上

メリット・デメリットを意識して、効率のよいインデックスを最小限作成することが大事です

0
0
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
0
0