データベーススペシャリスト

データベーススペシャリスト資格試験 索引(インデックス)を解説

索引とは何か?

データベースに慣れるまではなかなかイメージできませんよね?

一言で言うと検索を速くするための物なんですが

作成するにはいくつかのポイントがあるんです。

索引(インデックス)とは?

索引とは検索処理を高速化するための仕組みです。

 

ちなみに正規化された表はパフォーマンスが落ちます。

試験の問題で「正規化するとパフォーマンスが上がる」と

いう問題は×ですから引っかからないでくださいね。

 

正規化すると表がばらばらに分かれるので

検索時にその表をつなぎ合わせる作業が発生し

パフォーマンスは落ちます。

 

検索速度を上げるには非正規化と

索引(インデックス)です。

 

索引とは各テーブルの列に対して設定します。

単体の列でも,複数の列でも指定できます。

 

索引を指定しておくと

その列をWhere条件に入れたときの

検索速度は劇的に速くなります。

 

デメリットは

その索引自体の容量が必要なこと。

テーブルのデータプラス索引の領域が必要なので

大量データの場合は,索引だけでも

結構な容量になったりします。

 

あとは,更新や追加するたびに

インデックスを作成しなおす必要がある為

更新系のパフォーマンスは多少落ちる可能性があります。

 

索引(インデックス)を付けたほうが良い属性

取り得る値の範囲が広い属性

その列に存在する可能性のある値が多いほど

インデックスは有効です。

 

例えば顧客Noとか,キーになっているものは

すべての行で値が違うので

索引を入れると確実に速くなります。

 

SQLServerなどでは

主キーを設定した時点で

索引も同時に作成されます。

 

逆に性別など「男性」「女性」「不明」くらいしか

ない項目だと,並び替えたところで

検索結果に変化はほとんどなかったりします。

10000行のうち6000行は男性,4000行は女性と

並んでいても,

そこから男性だけ検索した場合,

10000行のうち6000行にアクセスが必要だし,

それなら10000行全部見て男性を探しても

検索時間はさほど変わりません。

インデックスの種類

B木インデックス

通常インデックスといえばこれを指します。

特徴

  • 完全一致だけでなくある範囲の値を
    検索する時にも有効に機能する
  • order byでも有効に機能する

ハッシュインデックス

特徴

  • ハッシュ値を求めて完全一致で検索するので
    高速だが,範囲検索には不向き
  • Order byでは有効に機能しない

SQLやデータベースについてもっと学びたい方は次の記事でおすすめの書籍を紹介しています↓

あわせて読みたい
SQLServerやデータベースに関する書籍のおすすめランキング!SQLをこれからはじめようと思っている人や,普段SQLを使った仕事をしているけどもっと詳しくなりたい!という方向けに,どんな本を読めばい...

<<   1   2   3   4   5   6   7   8   9    10   11   12   >>

トップページへ戻る