• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS SQLビューで条件分岐の処理速度)

ACCESS SQLビューで条件分岐の処理速度

このQ&Aのポイント
  • ACCESS操作、ACCESS VBAどちらも超初心者の方へ。テーブルAとテーブルBの伝票NOが一部一致した場合に、テーブルBの伝票名を表示するクエリを作成しましたが、処理速度が遅くなっています。メインフォームにテキストボックスを作り、検索結果を別の表示フォームで表示する方法です。初心者にもわかりやすく処理速度を上げる方法を教えてください。
  • ACCESS SQLビューを使って、テーブルAとテーブルBの伝票NOを一部一致させ、テーブルBの伝票名を表示するクエリを作成しました。しかし、処理速度が非常に遅いです。メインフォームにテキストボックスを作り、検索結果を別の表示フォームで表示する方法です。初心者向けに処理速度を上げる方法を教えてください。
  • ACCESS操作やACCESS VBAについて超初心者の方です。テーブルAとテーブルBの伝票NOを一部一致させ、テーブルBの伝票名を表示するクエリを作成しましたが、処理が遅いです。メインフォームにテキストボックスを作り、検索結果を別の表示フォームで表示する方法です。誰でも理解できるような処理速度の改善方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

SQLの ON句を下記のように書き換えて、テーブルB.CSNo にインデックスが設定してなければ設定してください。 ON テーブルB.CSNo=IIf(LEN(テーブルA.伝票NO)=10,LEFT(テーブルA.伝票NO,5),LEFT(テーブルA.伝票NO,4)) 現状だとテーブルB.CSNoが関数の引数になっているのでインデックスが利用できませんが、上記なら有効になります。 これで改善できないようなら、『伝票NOを5ケタ、4ケタに加工した列を追加する』という方法になるでしょう。 その場合は、追加したフィールドにもインデックスを設定します。

okwv-first
質問者

お礼

教えていただいたSQLにしたところ、劇的に改善されました!(*^^)v 驚きました!  ありがとうございます!  またよろしくお願いします!

その他の回答 (1)

回答No.1

適切な回答をするには情報が不足してますね。下記の情報を補足してください。 現状のテーブルのレコード件数は何件か。 > 表示はメインフォームにテキストボックスをつくり、そこに検索するテキストを入力→上記のクエリから検索した結果を別の表示フォームで表示させる… 現状のクエリの概要(できればSQLを提示すると分かりやすい) 具体的にどのように抽出しているのか。(パラメータクエリまたはフィルター・・・?) 現状のテーブルの設計変更は可能か。 もし可能なら高速化できる可能性は高いです。 現状の設計のままだと大きな改善は期待できません。

okwv-first
質問者

補足

早速の回答、ありがとうございます。 現在のところ、テーブルAは7500件(10000件予定)、テーブルBは90件(150件予定)です。 クエリをつくり、SQLビューに下記を記入しています。 SELECT [テーブルA].ID, [テーブルA].日付, [テーブルA].伝票NO, テーブルB.伝票名称, [テーブルA].製番, [テーブルA].受領欄, [テーブルA].PDF FROM テーブルB RIGHT JOIN テーブルA ON IIf(LEN(テーブルA.伝票NO)=10,テーブルB.CSNo=LEFT(テーブルA.伝票NO,5),テーブルB.CSNo=LEFT(テーブルA.伝票NO,4)); テーブルAは毎日データが追加されていく予定なので、現在のところ変更はしたくないのですが、あまりに処理が遅いので伝票NOを5ケタ、4ケタに加工した列を追加することも考えています。 (もしくは、テーブルAのコピーを作り伝票NOを直接5ケタ、4ケタに加工、リレーションシップを作る) それではよろしくお願いいたします。

関連するQ&A