1

これが私の現在のクエリです

私のフォームのスクリーンショット:

スクリーンショット

SELECT * FROM jdsubs
 INNER JOIN amipartnumbers ON amipartnumbers.oemitem = jdsubs.oempartnumber
    WHERE ((([txtEnterNumber])
    In ([jdsubs].[oemsubnumber],[jdsubs].[oempartnumber])));
UNION SELECT * FROM ihsubs
 INNER JOIN amipartnumbers ON amipartnumbers.oemitem = ihsubs.oempartnumber
    WHERE ((([txtEnterNumber])
    In ([ihsubs].[oemsubnumber],[ihsubs].[oempartnumber])));
UNION SELECT * FROM mfsubs
 INNER JOIN amipartnumbers ON amipartnumbers.oemitem =mfsubs.oempartnumber
    WHERE ((([txtEnterNumber])
    In ([mfsubs].[oemsubnumber],[mfsubs].[oempartnumber])));

これを単純化して、あるクエリでユニオンを実行し、別のクエリで txtEnterNumber を oemsubnumber および oempartnumber と比較できますか?

この 1 つのクエリが多すぎるように感じます。

それとも私はこれを正しくやっていますか?

何百万ものレコードを検索しているので、これが可能な限り効率的であることを確認したい

4

1 に答える 1

2

そのまま実行する必要があります。oemitemoempartnumber、およびoemsubnumberがすべて索引付けされていると仮定します。

最初にすべてを統合してから、部品番号を比較してみると、索引付けされていないクエリ結果と比較することになります。

改善のためのいくつかのアイデアは次のとおりです。

  • 部品番号が1 つの部品テーブルにしか一致しない場合は、結果が返されるまで各クエリを一度に 1 つずつ実行します。
  • 3 つすべてのパーツ テーブルを結合し (1 つのフィールドをフラグとしてパーツの起源を特定するように設定)、そのテーブルに対して検索を実行します。

幸運を

于 2013-05-09T15:05:19.733 に答える