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

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

索引とは何か?

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

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

 

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

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

 

索引を指定しておくと

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

トップページへ戻る

 

BlazorでのWebアプリケーション開発手法2【C#】

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

A01_はじめに
B01_メッセージを出すレイアウトの作成
B02_pタグを使ったメッセージ表示
B03_ポップアップメッセージを表示する方法
B04_問い合わせメッセージを表示する方法
B05_ユーザーの入力を受けるメッセージ
B06_インラインJavaScript非推奨
B07_Javascriptを分離してアクセスする方法
B08_MessageServiceを作成する
B09_自作Serviceの依存性注入をする方法
C01_EditFormを使った入力検証
C02_ValidationSummary
C03_ValidationMessage
C04_入力コンポーネント_InputText
C05_InputNumber
C06_未入力を許容する方法
C07_InputNumberで対応している型
C08_InputDate
C09_InputSelect
C10_入力コンポーネント_InputCheckbox
C11_InputRadioとInputRadioGroup
C12_InputTextArea
C13_InputFile
C14_ファイルの上限を設定する
C15_フォーカスをあてる方法_標準編_ElementReference
C16_フォーカスをあてる方法_Razorコンポーネント編
D01_StringLength
D02_RegularExpression_正規表現
D03_EmailAddress
D04_Compare
D05_ViewModelに分ける方法
D06_依存性注入を利用したViewModelの生成
D07_CustomValidation1
D08_CustomValidation2
D09_プロパティレベルのCustomValidation
D10_ValidationContext
D11_処理をViewModelに移す書き方
D12_ViewModelに移せないロジック
D14_ShouldRender
D15_ViewModelに書かないほうがいいもの
D16_エラー箇所にフォーカスを当てる方法
E01_Azureにデプロイするための事前作業
E02_Azureにアップするアプリの作成
E03_Azureへの公開準備
E04_Azureへの公開
E05_データベースの作成
E06_データベースのデータを取得する
E07_データベースの値を画面に表示する
E08_Azureのデータベースを作成する
E09_Azureのデータベースにポータルサイトからログインする
E10_AzureのDBにテーブルを作成する
E11_BlazorアプリからAzureDBに接続する
E12_SQLデータベース料金の注意
E13_AzureSQLデータベースの無料オファーを受ける
F01_依存性注入のライフサイクル
F02_クラウドでのAddSingletonの動き

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