【具体例付き】カバリングインデックスとは?

2024年3月24日

当サイトはPR広告を利用しています。

解説

カバリングインデックスとはクエリに出現するすべてのカラムがインデックスに登録されている状況を指します。SELECT句で取得対象とするカラムやWHERE句で絞り込みに利用するカラムなどすべてのカラムがインデックスに登録されている必要があります。

カバリングインデックスでのクエリ実行は非常に高速です。なぜ高速になるのかを理解するにはインデックスの仕組みを知っている必要があるので簡単に解説します。

まずインデックスとは「索引 + 索引内の探し出したいキーワードにたどり着くためのアルゴリズムおよびデータ構造」です。(詳しくは以前書いたこちらの記事で:【図解】インデックスとは?高速探索を可能にする仕組み【DB】

インデックスが設定された状態とは、テーブルの実データとは別の領域にインデックスのデータ構造を構築していることになります。元のテーブルに追加でインデックス用のカラムが追加されるようなイメージではありません。

カバリングインデックスでない場合にはインデックスのデータ構造を用いて対象のレコードの位置を把握した後に、テーブルのデータにアクセスする必要があります。つまりインデックスとテーブルという二つの領域にアクセスする必要があります。

カバリングインデックスだと実テーブルにアクセスする必要がなく、インデックスのデータ構造内の探索のみでクエリを完結させることができます。だからこそ高速なクエリ実行が可能になるのです。

インデックス側のデータだけでクエリの全てをカバーできている状態、これがカバリングインデックスです。

ちなみにカバリングインデックスでWHERE句を利用した時のメリットが大きいことは分かると思いますが、WHERE句を使わないSELECTステートメントでもカバリングインデックスは高速で処理負荷も小さくなるので積極的に使うべきです。

これはテーブルよりもインデックスの方がデータサイズが小さく、読み込み処理が容易だからです。(少し深い話をすると、MySQLやPostgreSQLなど多くのリレーショナルデータベースでは単一カラムの値の取得しようとしたときにも一旦行全体を読み込んでいます。これはロウストア型といって各カラムが密接に関わった行として保存されているからです。)

具体例

カラムageとhightで複合インデックスを設定したテーブルusersがあるとします。このテーブルは他にもweightというカラムも持っているとします。

このとき以下のSQLステートメントはどちらもカバリングインデックスになります。

SELECT age, hight FROM users WHERE age = 25;
SELECT age, hight FROM users;

逆に以下のSQLステートメントはカバリングインデックスになりません。

SELECT age, hight FROM users WHERE weight = 60;
SELECT age, hight, weight FROM users;

weightカラムの情報はインデックスになく、実テーブルへのアクセスが発生してしまうためです。

まとめ

単純にインデックスを活用するだけでも大幅な改善が見込めますが、カバリングインデックスも使いこなすことで一段階上のクエリにできます。このカバリングインデックスは特にレコード数やカラム数が膨大なときに大きな効力を発揮します。

ぜひ使いこなせるようになってください。

直近でおすすめの本

直近十数冊読んだ中で一番おすすめの本です。

ビジネスデザイナーという肩書きを持つイノベーションシンキングの世界的第一人者である濱口秀司さんの書かれた本です。肩書きだけだとどのようなことをしている人か分かりにくいかもしれませんが、USBメモリやマイナスイオンドライヤーなど誰もが知る有名商品の産みの親の方です。

アメリカのコンサルタントの中でも最高額のコンサルティングフィーを受け取っている方で、私の友人から聞いた話だとこの人のコンサルティングを受けるためには1時間でも7桁の額は準備する必要があるとのことでした。

濱口秀司さんは自分の中でイノベーションを起こすための型を持っており、その型について本の中でかなり詳しく教えてくれています。革新的なアイデアを出す方法をここで詳細にはお伝えしませんが、とてもざっくりとまとめると以下の手順になります。

バイアスの特定→バイアスの破壊

革新とは現状の破壊です。現在世の中にあるバイアスを認知するところからアイデアの創出は始まります。この本ではバイアスを認知する方法、そして破壊する方法を詳しく述べてくれています。個人開発をしようとしているけど何を作れば良いか思い浮かばない方やや会社を立ち上げようとしている方に特におすすめの本です。

過去におすすめした本は以下の記事にまとめています。