最後にインデックス作成の注意点を解説しておきます。
更新系
インデックスを作成すると,検索は速くなるのですが,更新系は遅くなります。これはインデックスファイルを作成したり,変更したりする時間がかかるためその分負荷がかかるという事です。インデックスは順番通りに並んでいるものなので,当然データが変わったら,インデックスも変更しないといけないので,その分の更新が必要という事です。
これにどれくらい時間がかかるかは,正直試してみないとわかりません。ただ,ユーザーが画面から手で更新する程度なら影響はないですが,夜のバッチ処理など,大量のデータの更新が発生する場合は,1時間で終わっていた処理が,インデックスを入れたせいで,3時間になったなどの例はあります。こればっかりは,想定されるマシン構成で負荷テストを実施する必要があります。
インデックスが効かないパターン
せっかく作成したインデックスも,効かないパターンがあります。例えば前方一致以外のLike検索です。前方一致ならいいのですが,文字列の真ん中とか,後方一致にインデックスは効きません。インデックスの並びをイメージしてもらうとわかると思いますが,例えばアルファベット順に並んでいる場合に「A」で始まるものならインデックスを使えますが,最後が「A」のやつって言われても困りますよね。結局全部見る必要がありますから,IndexScanなどになります。
あと検索条件で関数を使うようなケースです。要するにインデックスに入っている値を加工して検索するような場合は,インデックスがうまく使えない場合があります。
インデックスがうまく効いているかどうかは,結局実行プランをみればわかるので,SQLを書いたら,実行プランを見るという習慣を付けましょう。
■4700人以上が受講している動画コースはこちらからご確認ください
#S1_01_はじめに
#S1_02_インデックスとは
#S1_03_インデックスの有無実演
#S1_04_SQLServerのインストール
#S2_01_データベースとテーブルの作成
#S2_02_データの作成
#S2_03_全件検索
#S2_04_キャッシュとは
#S2_05_検索条件ありで検索
#S2_06_テーブルスキャンとは
#S2_07_インデックスの種類
#S2_08_非クラスター化インデックスの作成
#S2_09_非クラスター化インデックスの内部構造
#S2_10_インデックスのない列の検索とインデックスの有効化無効化
#S2_11_クラスター化インデックスの作成
#S2_12_クラスター化インデックスの内部構造
#S2_13_クラスター化インデックスの検索
#S2_14_インデックスの検索補足
#S2_15_付加列インデックス
#S2_16_プライマリキーとユニークキー
#S2_17_インデックス作成手順
#S2_18_インデックスの注意点
おわりに
■4700人以上が受講している動画コースはこちらからご確認ください