2018.05.14

インデックスを使用してデータベースの検索速度を高める

データベースのパフォーマンスを考える上で、本でいう目次に相当する機能であるインデックスを適切に設定することは重要です。
インデックスはデータベースの検索速度に大きく影響し、引いてはWebサービスの快適さに直結します。
今記事ではインデックスについて整理してみましょう。

インデックスのメリットデメリット

先ほども記述しましたが、インデックス機能を使うメリットは検索速度の向上です。
使いかたによっては10倍以上も速度向上が見こめるため、適切なインデックスの使用は必須と言えるでしょう。

逆に、デメリットもあります。
インデックスはINSERT, UPDATE, DELETEを実施するたびに再生成されます。
そのため、変更の多いテーブルにインデックスを作ると、逆に動作速度が低下することもあります。
また、巨大なテーブルにインデックスを作ると、インデックスのファイルサイズが大きくなるという問題もあります。

インデックスをどこに使うか?

実際にインデックスを設置するには、どのようにすれば良いでしょうか?
もちろんデータベースのテーブル構造ごとに異なりますが、おおまかな指針を考えてみます。

01.WHERE句
インデックスは検索速度を向上させるため、実際にWHERE句に使うカラムに設定すると効率化が見込めます。
ただし、データ量が多く変更が多いカラムの場合は、インデックスの再生成が何度も実施されてしまうため、かえってパフォーマンス低下の怖れがあります。

02.結合条件
これは上記WHERE句と同様に、絞り込みを行う条件であるため、インデックスを効果的に使用できるためとなります。

03.カラムの値の種類が多い
区分などで0か1など、条件しかデータがない場合は、インデックスは効果を発揮しません。
名前など、データが複数あるもののほうがインデックスを使用するものとしては望ましいものとなります。

まとめ

データベースの速度はサービスの快適さに直結します。
ユーザに使いやすいサービスを提供するため、常に速度を意識したデータベースを構築しましょう。

●Wantedly掲載情報(本当にやりたいことに辿り着きたい技術大好きエンジニア募集!)

●Wantedly掲載情報(エンジニア想いの環境でJavaやPHPにチャレンジしたいエンジニア募集!)

●Wantedly掲載情報(Angular/Reactを極めたいフロントエンジニア大募集!!)

お知らせ一覧へ