2009年06月04日


索引の作成に適さない条件

これはガイドラインとしての決まり文句ですが、
一部は当然ですが、残りは条件付きで使う場合もあります。

■ データ量の少ない表である。
  これは、実際問題殆ど速度的に変わらない結果になるので、
  確実にデータ量の少ない表には、主キー以外は必要無いと思いますが、
  元となるデータがよほど大量で、主キー以外の列と結合するのであれば、
  必要になるかもしれません。

■ 問合せの条件としてその列が使用されることがあまりない。
  ある程度抽出が終わった後の選択条件であれば、データ量が少なく
  なるので、前述の内容と関連するところもあります。
  しかし、そもそも全ての列に索引をつける事はナンセンスなので、
  こういう優先順位が生まれるのは当然です。

■ 全行の2〜4%以上の行を検索する問合せを頻繁に実行する。
  これは、常にほぼ全件探索しているという意味からのガイドラインだと思います。
  この数値の根拠は解りませんが、言いたい事はそういう事でしょう。

■ 表が頻繁に更新される。
  表の更新と言うよりも、索引を持つ列が頻繁に更新されると、
  索引の更新が常にデータの更新時間に対してプラスされるので、レスポンス
  の問題が出てきます。実際は、追加データが殆どのトランザクションですと、
  索引は多く欲しいけれども多いほど更新にかかる時間が累積されるおそれ
  があるので、計算の上テストデータで検証が必要になるかもしれません。

  しかし、時間に余裕があるならば、何がシステムとって重要かが判断基準になります。

■ 列に含まれる値の範囲が狭い。
  例えば、性別という列では2種類しかデータの種類が無いので、他の種類の多い
  データに比べて索引を使う恩恵を得られないのですが、付ける付けない以前に
  データの扱いを考えれば、必要あるかどうかは限定された目的に対してのみでしょう。

  そういう場合は、必要な処理の直前に索引を作成し、必要がなくなったら
  索引を削除するという手段もあります。

索引の付加は、大量のデータの処理時間に対して劇的な変化を与えます。


posted by at 2009-06-04 16:01 | 暗記 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。