seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

ACCESS(MDB)の実行計画を見る方法

ACCESS(MDB)でクエリの実行計画を見るには、以下のようにレジストリを変更する。*1

レジストリ変更

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Debug]
"JETSHOWPLAN"="ON"

このようにすると、実行時にshowplan.outという名前のテキストファイルが作成され、以後、ここに実行計画が追記されてゆく。*2
このファイルが作成される場所はWindows2000ならJET実行時のカレントディレクトリ、XPならばユーザのマイドキュメントに置かれる。(Vistaは未確認)
放置すると、どんどん増えるので、使い終わったらOFFにしておく。

出力例

インデックスがない場合

--- クエリ1 ---

- Inputs to Query -
Table 'tmodel'
- End inputs to Query -

01) Restrict rows of table tmodel
      by scanning
      testing expression "buc=[?]"
02) Group result of '01)'

インデックスをつけた場合

--- クエリ1 ---

- Inputs to Query -
Table 'tmodel'
- End inputs to Query -

01) Restrict rows of table tmodel
      using rushmore
      for expression "buc=[?]"
02) Group result of '01)'
  • by scanning となっていると、フルスキャン。
  • using rushmore となっていればインデックスを使っており、しかも、インデックスページだけでデータを得られている、

ってことっぽい。


関連情報: http://msdn2.microsoft.com/en-us/library/aa188211.aspx

*1:元ねた: http://articles.techrepublic.com.com/5100-22-5064388.html

*2:試したところ、レジストリを書き換えてACCESSを再起動すれば出力されていた。ログオフやリブートは必要ないようである。