スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(DB2)静的SQL環境でインデックス使用状況を簡単に調査する

むかしこんにゃく工房←スポンサーサイト

性能評価において使用インデックスを調べる有名な方法にPLAN_TABLE表を使用する方法があります。
ただし、これは事前にPLAN_TABLE表を作成しておく必要があるなどちょっと面倒くさかったりします。

静的SQLの環境ではSQLのバインド時に、SQLごと使用するインデックスをカタログ表のSYSPACKDEPに記録するため、この表にアクセスすれば、SQLが想定しているインデックスを使ってくれているのか調べることが出来ます。

もちろん、PLAN_TABLEのような事前に何かしておくといったことは不要です。

SQL例)
SELECT DCOLLID,DNAME,BNAME
FROM SYSIBM.SYSPACKDEP
WHERE DCOLLID = 'コレクションID'
AND DNAME = 'パッケージ名(SQL名)'
;
注)DBADM以上の特権(権限)のあるユーザで実行する必要あり。

抽出結果例
DCOLLID      DNAME      BNAME
COL1             SQL1         テーブル名
COL1             SQL1         インデックス名1
COL1             SQL1         インデックス名2
  :
この例の場合は、SQL1がインデックス名1とインデックス名2の複合索引でアクセスすることが分かります。

上記SQLを投げると、列BNAMEに該当するパッケージ(SQL)の使用オブジェクト(テーブルやインデックスなど)一覧が取得できます。
従って、BNAME列にインデックスがあれば、そのインデックスを使用していることが分かり、なければインデックスを使用しない表スキャンアクセスであることが分かります。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

syao88

Author:syao88
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
たるいカウンタ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。