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

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

索引とは何か?

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

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

 

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

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

 

索引を指定しておくと

その列を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新機能」を観る

参考にした書籍

実戦で役立つ C#プログラミングのイディオム/定石&パターン
プログラミングC# 第8版

オブジェクト指向
ジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
  すばらしい本です。オブジェクト指向が詰まっています。

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座
  サンプルコードはjavaですが,最初にオブジェクト指向に目覚めるのに最適な本です。

Head Firstオブジェクト指向分析設計 ―頭とからだで覚えるオブジェクト指向の基本
  マンガみたいな感じで読めて,オブジェクト指向について学べます。  

Clean Code アジャイルソフトウェア達人の技
Clean Architecture 達人に学ぶソフトウェアの構造と設計
Adaptive Code ~ C#実践開発手法
.NETのエンタープライズアプリケーションアーキテクチャ
実装パターン
  廃盤のため異常に高くなりすぎなので,様子を見た方がいい気がします。一万円のボリュームがあるかどうかは微妙です。

オブジェクト指向でなぜつくるのか
レガシーコード改善ガイド
リファクタリング 既存のコードを安全に改善する

デザインパターン
オブジェクト指向における再利用のためのデザインパターン
オブジェクト指向のこころ
Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

ドメイン駆動開発
エリック・エヴァンスのドメイン駆動設計
実践ドメイン駆動設計
ドメイン駆動
現場で役立つシステム設計の原則
エンタープライズアプリケーションアーキテクチャパターン