1

2つの異なるデータベースサーバーからのリンクテーブル(たとえば、SQLServerデータベースからのテーブルとOracleデータベースからのテーブル)を含むMS Accessデータベースがあり、これら2つのテーブルを結合するクエリを作成する場合、Access(またはJetエンジン)はどのようになりますか、私は推測しますか?)このクエリを処理しますか?最初に各テーブルでいくつかのSELECTを発行して、参加しているフィールドを取得し、一致する行を特定してから、それらの行に対してさらにSELECTを発行しますか?

4

4 に答える 4

3

はい、重大なパフォーマンスの問題が発生する可能性があります。私はこの種のことを何年もやってきました。Oracle、Sql、および DB2 - うーん。時々、午前 5 時にタイマーをセットしなければならなかったので、7 時に着いたら完了です。

データセットが十分に重要な場合は、多くの場合、ローカルでテーブルを作成してからデータをリンクする方が高速です。リモート データセットの場合は、パススルーも調べてください。

たとえば、昨日のすべての顧客を oracle データベースから取得し、すべての顧客の購入を SQL データベースから取得するとします。毎日平均 100 人の顧客がいるとしますが、リストは 30,000 で、製品のリストは 500,000 であるとします。100 人の顧客のリストについて oracle db にクエリを実行し、それをINsql db へのパススルー クエリのステートメントのように記述できます。ほぼ瞬時にデータを取得できます。

または、レコードセットが巨大な場合は、2 つの ID のローカル テーブルを作成し、それらをローカルで比較してから、必要な一致を取得します。

醜いですが、文字通り何時間も節約できます。

于 2009-06-26T18:20:49.233 に答える
2

それは私の推測です。結合の両側にインデックスがある場合に役立ちますが、どちらのサーバーもクエリを完全に制御できないため、クエリをさらに最適化することはできません。

于 2009-06-26T04:07:11.843 に答える
1

2つの異なるデータシステムのテーブルを結合した実際の経験はありません。ただし、要件などによっては、Accessテーブルに必要なレコードとフィールドのみを使用してSELECTクエリを実行し、Accessで最終的な結合とクエリを実行する方が速い場合があります。

于 2009-06-26T04:10:58.753 に答える