2つの異なるデータベースサーバーからのリンクテーブル(たとえば、SQLServerデータベースからのテーブルとOracleデータベースからのテーブル)を含むMS Accessデータベースがあり、これら2つのテーブルを結合するクエリを作成する場合、Access(またはJetエンジン)はどのようになりますか、私は推測しますか?)このクエリを処理しますか?最初に各テーブルでいくつかのSELECTを発行して、参加しているフィールドを取得し、一致する行を特定してから、それらの行に対してさらにSELECTを発行しますか?
4 に答える
はい、重大なパフォーマンスの問題が発生する可能性があります。私はこの種のことを何年もやってきました。Oracle、Sql、および DB2 - うーん。時々、午前 5 時にタイマーをセットしなければならなかったので、7 時に着いたら完了です。
データセットが十分に重要な場合は、多くの場合、ローカルでテーブルを作成してからデータをリンクする方が高速です。リモート データセットの場合は、パススルーも調べてください。
たとえば、昨日のすべての顧客を oracle データベースから取得し、すべての顧客の購入を SQL データベースから取得するとします。毎日平均 100 人の顧客がいるとしますが、リストは 30,000 で、製品のリストは 500,000 であるとします。100 人の顧客のリストについて oracle db にクエリを実行し、それをIN
sql db へのパススルー クエリのステートメントのように記述できます。ほぼ瞬時にデータを取得できます。
または、レコードセットが巨大な場合は、2 つの ID のローカル テーブルを作成し、それらをローカルで比較してから、必要な一致を取得します。
醜いですが、文字通り何時間も節約できます。
それは私の推測です。結合の両側にインデックスがある場合に役立ちますが、どちらのサーバーもクエリを完全に制御できないため、クエリをさらに最適化することはできません。
2つの異なるデータシステムのテーブルを結合した実際の経験はありません。ただし、要件などによっては、Accessテーブルに必要なレコードとフィールドのみを使用してSELECTクエリを実行し、Accessで最終的な結合とクエリを実行する方が速い場合があります。