3 つの MySQL テーブルがあります。 PRODUCTは 2 人の子供を持つ親でUK_SALESあり、AUS_SALES. UK_SALESとの構造AUS_SALESは同じでPRODUCT、製品 ID を介して関連付けられています。
特定のカテゴリの製品について、UK と AUS での売上の和を取得したいので、次のクエリを使用しています。
SELECT au.* FROM aus_sales au
INNER JOIN product p on p.id = au.id
WHERE p.category = 'electrical'
UNION ALL
SELECT uk.* FROM uk_sales uk
INNER JOIN product p on p.id = uk.id
WHERE p.category = 'electrical'
今、それはうまくいきますが、それが最適かどうかはわかりません。具体的には、製品テーブルを2回スキャンして制限すると思います
WHERE p.category = 'electrical'.
これは本当にそうですか?それとも、MySQL は 2 番目の選択で使用するために最初のフィルターの結果をキャッシュしますか?
第二に、このクエリを記述するより良い方法はありますか?
製品テーブルと売上テーブルは両方とも数百万のレコードに実行されるため、パフォーマンスが重要になります。
ありがとう!