okinawa

IT勉強メモ

DB勉強メモ

お勉強の内容を記憶に残すためにメモをば。

インデックスって何なの?

参考記事

とてもわかりやすい。こっちを見よう↓
SQL Serverのインデックスの理解を深める - Qiita

インデックスのイメージ

カラムに索引番号をつける

索引順に並べ替える

並べ替えたデータを索引番号「1~100」「101~200」「201-300」のようにまとめる

まとめたデータを木構造にする

高速検索!

例:下記のテーブルにインデックスを貼る

table1

CREATE CLUSTERED INDEX [IX_Table1_tenpo_cd]
    ON [Table1] ([tenpo_cd] ASC)
GO

クラスター化インデックス

木構造の中に実データが入っていて直接アクセスする。

クラスター化インデックス

木構造の中にはキー値だけが入っていて実データはなし。
検索結果をもとに実データにアクセスする。

エクステント(データ管理の単位)

メモリ領域を効率的に使用するための仕組み。
容量変更が難しいブロックをエクステントで管理して、可変的に扱う。

  • ブロック≒ページ:メモリー管理の単位。4KBが標準。ハードウェアに規定されていて変更できない。
  • エクステント:ページの上位単位。使用ブロック数の情報を保持。

以下、ざっくり解説
ブロックには1個1個管理情報が必要

1TBみたいな大容量データを扱うにも全ブロックに管理情報が必要で、管理情報でメモリー消費する

じゃあ1個のブロック容量を大きくしよう

そうすると小さいデータを扱うときに無駄が大きくなる(T_T)

せや!エクステントでまとめて複数ブロックの管理情報を扱おう!

データが小さいときは1エクステント1ブロックで、大容量のときは1エクステント1000ブロックみたいにすれば、管理情報も減らせるし、ブロックサイズを変更しないで済むやで。

・参考サイト

エクステント | 日経クロステック(xTECH)

Viewって何なの?

SELECT文を保存したもの。
実はSELECT結果は保存してなくて、毎回SELECT文を実行している。

でも、Viewに対してUPDATEなどの更新をかけることはできる。
Viewを更新すると元テーブルにも更新がかかる。