データベースを使っているといろいろな処理が遅くなる場合があります。その対策としてSQLやインデックスなどでチューニングを行います。
Accessも例外ではなく、先日、100万件のデータを処理するプログラムを作ったときは、あれやこれやとチューニングを行って処理を速めるようにしました。
その時に知ったのですが、AccessでSQLの実行計画を取得し、それを参考にチューニングを行うことが出来ます。下記にそのAccessによる実行計画を取得する方法をメモ代わりに明記しておきます。
AccessでSQLの実行計画を取得するにはWindowsのレジストリを触る必要があります。レジストリは御存知の通り、Windowsを動かす上で重要な部分です。ヘタに触って壊してしまうとWindowsが壊れ、最悪の場合、Windowsが二度と動かなくなる場合もあります。その為、下記方法を行う場合は自己責任で行ってください。
私の環境ですが、Windows 7(64bit)のAccess 2010です。それ以外の環境では、おそらくほぼ同じだと思いますが、確認はしていません。
まずはレジストリエディタを起動します。スタートメニューの検索ボックス(?)に「regedit」と入力してレジストリエディタを起動させます。

スタートメニューに「regedit」と入力してレジストリエディタを起動
レジストリが起動したら
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines
に「Debug」のキーを作成します。その中に「JETSHOWPLAN」の文字列値を作り、値に「ON」と入力します。これで設定は終わりです。
あとは何かAccessファイルを起動しクエリなどを動かしてみてください。すると、私の環境ではドキュメントフォルダに「showplan.out」というテキストファイルが出来ますので、テキストエディタで開いてみてください。すると下記のような内容が書かれます。
— qsel_user —
– Inputs to Query –
Table ‘user’
– End inputs to Query –01) Restrict rows of table user
by scanning
testing expression “user.user_name Like ‘*森*'”
実際にどのような意味があるかは、各自で解析する必要がありますが、チューニングのヒントが隠されている場合があります。
あと、注意しなければならないのはAccessを起動するたびに「showplan.out」ファイルへ書かれますので、どんどん肥大していきます。なので、不要になったら先ほどの「JETSHOWPLAN」を「OFF」にしておきましょう。