作成すべきインデックスについてアドバイスを取得するには

提供: DB2逆引きWiki
移動: 案内, 検索

DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#チューニング編】 【DB2逆引きリファレンス目次#自動チューニング

目次

前提

  • データベースに対する読み取りアクセス権限およびEXPLAIN表に対する読み取りおよび書き込みアクセス権限

解説

作成すべきインデックスについてアドバイスを取得するには、db2advisコマンドを用います。

db2advis -d データベース名 ワークロード指定 [-u ユーザ名/パスワード ] [-o 出力ファイル名 ]

-d データベース名
インデックス作成のアドバイスを取得するために接続するデータベースの名前を指定します。
ワークロード指定
インデックス作成の前提となるワークロード(実行するSQL)を以下の形式のいずれかで指定します。
-s"SQLステートメント"
単一のSQLステートメントを指定します。SQLステートメントは必ず二重引用符(")で括ってください。
-i ファイル名
ひとつ以上のSQLを記述したファイルの名前を指定します。各SQLの終わりには必ずセミコロン(;)を入力してください。 SQL以外にも以下のものを記述することができます。
-- コメント
コメントを記述します。
--#SET FREQUENCY 実行頻度の重み
SQLが実行される回数の重み付けを整数値で指定します。この記述がなされた行以降で記述されたSQLに対して有効になります。 実行頻度の重みづけを指定することで、どのSQLを重要視すべきか指定できます。

-g
動的SQLスナップショットに含まれるSQLをワークロードとして用います。

-u ユーザ名/パスワード
データベースへの接続に用いるユーザ名およびパスワードを指定します。
-o 出力ファイル名
インデックスを作成するためのDDLを出力するファイル名を指定します。

使用例

SQLステートメントを指定して、データベース(ここではsample)に対して作成すべき索引のアドバイスを取得する例。

db2 ==> db2advis -d sample -s "SELECT * FROM employee"↓

ワークロードファイル(ここではworkload.sql)を指定して、データベース(ここではsample)に対して作成すべき索引のアドバイスを取得する例。

db2 ==> db2advis -d sample -i workload.sql↓

ワークロードファイルworkload.sqlの内容は以下のとおりです。

-- SQL 1
--#SET FREQUENCY 100
SELECT * FROM employee;

-- SQL 2
--#SET FREQUENCY 10
SELECT empno, firstnme, midinit, lastname, workdept, deptname
  FROM employee, department
  WHERE employee.workdept = department.deptno;

注意

  • db2advisコマンドを実行する前に、予めEXPLAIN表を作成しておく必要があります。

参照

個人用ツール
名前空間

変種
操作
案内
ツール