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

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

索引とは何か?

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

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

 

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

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

 

索引を指定しておくと

その列を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   >>

トップページへ戻る

 

C#文法:コレクション

■非公開コース「C#14新機能」プレゼント:
非公開コース「C#14新機能」(80分)をご覧になりたい方は
こちらからURLとパスワードを発行していますので、ご覧になってみてください。
非公開コース「C#14新機能」を観る

A01_はじめに
A02_プロジェクトの作成
B01_配列とは
B02_配列の生成とアクセス
B03_生成と同時に値を設定する
B04_型推論による生成
B05_メソッドの引数などにする場合の注意点
B06_Length
B07_IndexOfでの検索
B08_FindIndexでの検索
B09_Find
B10_Exists
B11_FindAllとFindLast
B12_誤ったコピー
B13_Array.Copy
B14_範囲指定のコピー
B15_Resize
C01_ArrayList
C02_List
C03_List 動的な要素の変更
C04_Listのコンストラクタ
C05_Listのコンストラクタ_Capacity
C06_ListTからArrayクラスのメソッドが呼ばれている
D01_コレクションインタフェースとは
D02_異なるコレクションクラスに互換性を持たせる
D03_インタフェースの階層構造
D04_クライアントができる操作を制限させる
D05_クライアントができる操作を制限させる_後半
D06_Enumerableの拡張メソッドに関して
D07_ReadOnly系のコレクションインタフェース
D08_AsReadOnly
D09_ToListでコピーする
D10_ListTはprivateで使う

■非公開コース「C#14新機能」プレゼント:
非公開コース「C#14新機能」(80分)をご覧になりたい方は
こちらからURLとパスワードを発行していますので、ご覧になってみてください。
非公開コース「C#14新機能」を観る