• ベストアンサー

検索の効率に付いて

フロントエンドをAccessのADPにて作成しようとしています。 少しスッキリしないので確認をさせて下さい。 AccessのVBAやフォームのソースに書くSELECTですが SELECTであれば全てサーバー側で絞り込んで結果だけが帰って来るのか from句で指定したテーブル全件が送られて来てクライアント側で 絞り込みされるのかどちらでしょうか? 回線スピードが遅いのでネットワークに流れるデータ量を抑えたいと 考えています。 私の頭の中では・・・ FROM [テーブル名] の場合はクライアント側 FROM dbo.[テーブル名] の場合はサバー側 要はAccessの「テーブル」と「クエリ」に表示されているオブジェクトを 指定するとクライアント側(全件→クライアントで絞り込み=データ量多)、 「dbo.」を付けるとサーバー側(絞り込み後のデータ→クライアント=データ量少) と考えています。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

MDBのリンクテーブルですら、SQLサーバに存在するテーブルに対してSELECT文を実行して全件を取得し、Access側でデータを抽出する、ということはありえません。 ましてやADPは実質SQL Serverに対して操作するようなものですからね。 実際にAccessがSQL Serverにどのようなコマンドを発行しているか、SSMS付属のSQLプロファイラで監視してみるとわかります。 「SELECT ..... FROM テーブル1 WHERE ...... ORDER BY .....」とACCESSのADPのリストにのデータソースに指定して 実行してみると、これがそのままSQL Serverに送られます。 ですので、オブジェクト内でのソートにこだわっていた理由がそこにあるなら、心配せずにadp側でWHERE句やORDER句を切っていただいて構わないと思います。 なお、質問者さんの書かれたdboというのは、(厳密な表現ではありませんが)テーブルの所有者を示す「スキーマ名」というもので、これにより処理の内容をわけるようなものではないです。

SEsyo
質問者

お礼

毎度ありがとうございます。 これで、絞り込みと並べ替えはクリアになりましたので、次へ進めます。 オフコンからの転身なんで、納得できないと次へ進めないんです。 また、よろしくお願いします、ありがとうございました。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

> FROM [テーブル名] の場合はクライアント側 > FROM dbo.[テーブル名] の場合はサバー側 ADPの場合は、[テーブル名]はdbo.[テーブル名]の省略形なだけのはずです。 どちらで書いても基本的にはサーバー側で処理されるはずです。

SEsyo
質問者

お礼

省略が頭の固い私にとってつらいものです。 ありがとうございました。

関連するQ&A