# 画面設計書 7-sp_BlitzIndex サマリー画面

## 概要

本ドキュメントは、SQL Server First Responder Kitのsp_BlitzIndexストアドプロシージャを@Mode=1で実行した際に出力される、インデックスサマリー画面の設計仕様を記載する。

### 本画面の処理概要

sp_BlitzIndexサマリー画面は、データベースごとのインデックス統計概要を表示する画面である。インデックス数、使用スペース、テーブル数などのサマリー情報を提供し、データベース全体のインデックス状況を俯瞰的に把握できる。

**業務上の目的・背景**：複数のデータベースを管理する環境では、各データベースのインデックス状況を一覧で把握したいニーズがある。@Mode=1のサマリー画面は、データベースごとのインデックス数、合計サイズ、使用パターンなどを集計して表示する。これにより、DBAはどのデータベースにインデックスチューニングの余地があるか、どのデータベースがストレージを多く使用しているかを一目で把握できる。全体像を把握した後、@Mode=0や@Mode=2で詳細分析を行う流れで使用する。

**画面へのアクセス方法**：`EXEC sp_BlitzIndex @Mode = 1`を実行することでサマリー画面にアクセスする。

**主要な操作・処理内容**：
1. 対象データベースのインデックス情報を収集
2. データベースごとに統計を集計
3. インデックス数、サイズ、使用率などのサマリーを計算
4. データベース単位でまとめた結果を返却

**画面遷移**：
- この画面から遷移できる画面：sp_BlitzIndex診断結果画面（@Mode=0）、sp_BlitzIndex使用詳細画面（@Mode=2）
- この画面に遷移してくる画面：sp_BlitzIndex診断結果画面（@Mode=1指定時）

**権限による表示制御**：sp_BlitzIndex診断結果画面と同じ権限要件。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 4 | sp_BlitzIndex | 主機能 | @Mode=1でデータベースごとのインデックス数・使用スペース等のサマリーを表示 |

## 画面種別

一覧（データベースサマリー表示）

## URL/ルーティング

```sql
-- サマリー表示
EXEC sp_BlitzIndex @Mode = 1;

-- 特定データベースのサマリー
EXEC sp_BlitzIndex @Mode = 1, @DatabaseName = 'MyDatabase';

-- 全データベースのサマリー
EXEC sp_BlitzIndex @Mode = 1, @GetAllDatabases = 1;
```

## 入出力項目

### 入力パラメータ

sp_BlitzIndex共通のパラメータを使用。@Mode = 1を指定する。

| パラメータ名 | データ型 | デフォルト値 | 説明 |
|-------------|---------|-------------|------|
| @Mode | TINYINT | 0 | 1を指定でサマリーモード |
| @DatabaseName | NVARCHAR(128) | NULL | 対象データベース |
| @GetAllDatabases | BIT | 0 | 全データベース対象 |

## 表示項目

### 結果セット

| 列名 | データ型 | 説明 |
|-----|---------|------|
| database_name | NVARCHAR(128) | データベース名 |
| table_count | INT | テーブル数 |
| index_count | INT | インデックス数 |
| nc_index_count | INT | 非クラスター化インデックス数 |
| total_reserved_MB | DECIMAL | 予約済みサイズ（MB） |
| total_used_MB | DECIMAL | 使用済みサイズ（MB） |
| total_rows | BIGINT | 合計行数 |
| tables_with_no_clustered_index | INT | クラスター化インデックスなしのテーブル数 |
| tables_with_no_nonclustered_indexes | INT | 非クラスター化インデックスなしのテーブル数 |
| indexes_with_no_reads | INT | 読み取りなしのインデックス数 |
| indexes_with_no_writes | INT | 書き込みなしのインデックス数 |

## イベント仕様

### 1-サマリー生成処理

@Mode=1で実行した場合、以下の処理が実行される：

1. インデックス基本情報を#IndexSanityに収集
2. インデックスサイズ情報を#IndexSanitySizeに収集
3. データベースごとに統計を集計
4. サマリー結果を返却

## データベース更新仕様

### 操作別データベース影響一覧

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| プロシージャ実行 | #IndexSanity | INSERT | インデックス情報を一時格納 |
| プロシージャ実行 | #IndexSanitySize | INSERT | サイズ情報を一時格納 |

## メッセージ仕様

sp_BlitzIndex共通のメッセージを参照。

## 例外処理

sp_BlitzIndex共通の例外処理を参照。

## 備考

- @Mode=1はデータベースレベルのサマリーを提供
- 詳細分析には@Mode=0または@Mode=2を使用
- @GetAllDatabases=1との併用で全DB概観を把握可能

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: @Mode=1の処理分岐を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | sp_BlitzIndex.sql | `sp_BlitzIndex.sql` | @Mode判定と分岐処理部分 |

### プログラム呼び出し階層図

```
sp_BlitzIndex (@Mode = 1)
    │
    ├─ インデックス情報収集
    │      └─ #IndexSanity, #IndexSanitySize
    │
    └─ サマリー集計・出力
           └─ データベース単位でGROUP BY
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| sp_BlitzIndex.sql | `sp_BlitzIndex.sql` | ソース | メインプロシージャ定義 |
