質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

4561閲覧

アクセスのリンクテーブルをパススルークエリで動作を早くしたい

wo6

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/03/21 01:04

前提・実現したいこと

マイクロソフトアクセスを使用しています。
アクセスのデータはバックエンドにマイクロソフトのアクセステーブル(容量が65,500KB)を設定し
フロントエンドにはマイクロソフトのアクセスにバックエンドのテーブルをリンクテーブで接続し
クエリ・フォームで運用していますが指定クエリでのフォーム表示時間がかかります。
この使用環境で表示時間を早くするためリンクテーブルをやめて、
パススルークエリを使用して早くしたいのですが可能でしょうか?
バックエンドのマイクロソフトのアクセステーブルを他のデータベース(MySQL,オラクル?)に
する必要があるのでしょうか?

試したこと

管理ツールのODBC Data Sources (32-bit)をユーザーDSN/システムDSNを設定し、
パススルークエリのODBC接続文字列設定を[ODBC;DSN=●●● ] でバックエンドのテーブルに呼込み
実行をトライしましたが、
[ ODBCを使用して、外部の Microsoft Access データベースエンジンのテーブルや組み込み可能
なISAM データベースのテーブルのインポート、エクスポート、またはリンクを行うことはできま
せん。] になります。

補足情報(FW/ツールのバージョンなど)

Windows 10 Pro
Microsoft Office Professional Plus の Microsoft Access
accdb

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リンク先がアクセステーブルならパススルークエリは使えません。
バックエンドがSQLサーバー、オラクルなどのRDBMSである必要があります。

容量が65,500KB程度のデータ量なら、ネットワーク環境にもよりますが、テーブルの設計、インデックスの設計、クエリの設計が最適化されていればそれほど重くなるとは思えません。まずはその辺りを見直すことから始めてはどうでしょうか。

SQLサーバー、オラクルなどのRDBMSへの移行はそれなりにコストがかかりますので、それからでも遅くないと思います。


補足

パススルークエリとは、サーバー側でSQL処理を実行してその結果のみを受け取るという仕組みです。
一般的にサーバーは高速なマシンを使うので、クライアントよりは高速に処理できる、
また、結果データのみ送信されるのでネットワークの負荷も軽くなり高速に処理できるわけです。
SQLサーバー、オラクルなどのリレーショナルデータベースマネージメントシステム(RDBMS)では、サーバーで常にマネージメントシステムが稼働していて、クライアントから受け取った命令を実行できるようになっています。
Accessはファイル共有型リレーショナルデータベースというもので、サーバー側のマネージメントシステムはなくOSのファイル管理システムを利用してデータを共有しています。サーバーからすべてのデータを受け取って、ローカルでSQL処理を行います。ですので、サーバー側に処理を依頼するパススルークエリは使えません。

「サーバーからすべてのデータを受け取って」と書きましたが、インデックスが設定してあると、インデックスを有効に使えるクエリ設計だと、まず、インデックスデータを受け取って、それを元にある程度必要なデータを絞り込んで受け取るという処理を実行しているようです。ですので、テーブル設計、インデックスの設定、クエリの設計は高速化に重要になります。

抽出条件でインデックスが無効になる場合 - hatena chips

結合条件でインデックスが無効になる場合 - hatena chips

投稿2020/03/21 01:28

編集2020/03/21 07:18
hatena19

総合スコア33610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wo6

2020/03/21 06:47

やはりそうでしたか。勉強不足でした。ありがとうございました。
hatena19

2020/03/21 07:19

回答に補足を追記しておきましたので、ご参考にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問