コース: Microsoft SQL Server:パフォーマンスチューニング

無料トライアルでこのコースを視聴する

今すぐ登録して、25,300件以上登録されている、業界エキスパート指導のコースを受講しましょう。

全体最適なインデックスの設計

全体最適なインデックスの設計

このレッスンでは、全体最適な インデックスの設計方針について 解説します。 まず、必要最小限のインデックスを 設計するようにしましょう。 SELECT 句でしか使わないカラムは 基本的には付加列にします。 例えばこのようなクエリがあった場合、 LoginName だけをキーに指定し、 Sei と Mei を付加列にします。 Sei と Mei もインデックスキーとして 指定するのは避けましょう。 なぜ SELECT 用カラムは 付加列なのか、理由を解説していきます。 付加列として加えておいた方が インデックスに拡張性があるためです。 どういうことかというと、 例えば、上記のクエリを使った処理を 新しくリリースした場合を考慮します。 このクエリにも最適なインデックスを 作りたいとします。 付加列にしたインデックスの場合は、 既存のインデックスを一度 DROP して 作り直せば OK です。 つまり、このような インデックスがあった場合に、 このインデックスを一度 DROP し、 インデックスの第2列目に DeleteFlag を加えたインデックスを 新たに作成します。 ひとつのインデックスで 2種類のクエリに対応可能です。 2種類のクエリを高速にする インデックスとなっていることを 実際に確認していきます。 このインデックスを作成した場合、 もともと実行されていたクエリに対しては、 今まで通り Index Seek が 採用されています。 また新しくリリースしたクエリについても、 Index Seek が 採用されています。 このように、 インデックスはひとつなのですが、 2種類のクエリに最適なインデックスを 提供することができています。 一方で付加列にしないインデックス場合は どうなるでしょうか? この場合、追加で別のインデックスを 作るしかなくなります。 どういうことかというと、 既存のインデックスが LoginName、Sei、Mei すべてインデックスキーとして 指定されている場合を想定します。 この場合、 ([LoginName], [DeleteFlag, [Sei], [Mei]) というインデックスを作りたくなりますが、 このインデックスにまとめようとするのは NG です。 それはなぜでしょうか? 前提として、インデックスを修正する時点で…

目次