索引(インデックス)を作成するリスクやデメリット


今回は、テーブルにインデックスを作成することのリスクやデメリットを少し紹介したいと思います。

SQLチューニングを行うとき、インデックスの作成やヒントの追加を行うんですが、そういうときに結構聞かれることがあります。

「インデックスを作成して、デメリットとかリスクってないんですか。」と。

厳密に言うとデメリットはあります。

データ更新時の時間の増加

例えば、そのテーブルへデータを登録や更新するときです。インデックスの情報も更新しなければならないので、インデックスがない場合に比べて若干余分に時間がかかります。とはいえ、ぶっちゃけ1つや2つインデックスがあっても、正直ほぼ体感できないくらいの極少の時間だと思います。

もちろん、インデックスに設定した列の数にもよりますが、たいていの場合、10個とかインデックスが存在してもほとんど変わりないと思います。

容量の増加

ちなみに、インデックスも表のデータと同じようにディスク上に存在しますので、インデックスが増えるほど容量は増えていきますのでご注意ください。

まとめ

正直なところ、厳密に言うとデメリットはありますので、データの更新が遅くなっていないことなど、検証しても良いとは思いますが、たいていの場合はほとんど変わりないと思います。

ただ、インデックスに設定する列の数が多かったりすると、データの容量もかなり必要になってくるので、ディスク容量に余裕がない場合はご注意ください。

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。