〜クエリパフォーマンスの定石を試す(6)〜#52クエリパフォーマンスの定石を試す(6)結論クエリパフォーマンスの面からは、『テーブル名には別名を使う』はAccessではどうでもよい。直接テーブル名を指定しても別名を使っても処理スピードは変わらない。クエリ(SQL文)のパフォーマンスを上げるための”定石”のひとつとして、『テーブル名には別名を使う』というものがあります。フィールド3,・・・・」というように単にフィールド名をカンマで並べるだけです。複数のテーブルなどを結合しているクエリや、あるいは単一テーブルでもAccessのクエリのデザインビューで自動生成されるSQL文の場合には、「テーブル名1.フィールド1,テーブル名1.フィールド2,・・・・」というように、フィールド名の前にそのテーブル名が明示的されます。このとき、テーブル名として、データベース内にあるテーブル名を直接指定するよりも、テーブル名を別名で定義し、その別名を使って「別名.フィールド1,別名.フィールド2,・・・・」というようにした方がパフォーマンスがよいというのが定石の考え方です。その理由としては、実行時のパフォーマンスではなく、SQL文の解釈に伴う処理が軽くなるというものです。複雑なクエリ、あるいはSQL文の解釈を連発的に必要とするような処理でもない限り、その”解釈に要する時間”というのが大きな影響を及ぼすということはなさそうに思えるのですが、今回は一応その点について実際にテストプログラムを走らせて確認してみることにします。別名」という書き方になります。今回のテスト用のコードは次のようなものです。2つのパターンを試していますが、違いは前述の通り、フィールド名の前にテーブルそのものの名前を直接指定するか、別名を指定するかだけの違いです。レコードセットを開いて全レコードをトレースするとういうコードですが、レコードの操作は今回の場合はあまり関係なく、SQL文を組み立てたあと、そのSQL文を元にレコードセットを開く部分だけの処理時間の差が出てくると想像されます。Subその結果は次のようになりました(単位は秒)。テーブル名をそのまま指定5.090.250.270.25テーブル名を別名指定5.050.250.270.25ご覧のように、ほぼ完全に”違いはない!”という結果になっています。想像通り、”SQL文の解釈”に要する時間は全体としては微々たるものだからでしょう。今回のプログラムでは、20回のループを回すだけなので、たった20回のSQL文の解釈など比較するにも値しない少しの時間で実行されてしまうということではないでしょうか?。今回は非常にシンプルなSQLです。長いSQL文、もっと複雑なSQL文、さらにそれらが一度に何百何千と連続して発行されるような処理がもしあるとすれば、そのようなときにはちょっと試してみる価値は残されているかもしれません。