作成すべきインデックスについてアドバイスを取得するには
提供: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表を作成しておく必要があります。