我有三个 MySQL 表。 PRODUCT
是有两个孩子的父母,UK_SALES
并且AUS_SALES
. UK_SALES
和的结构AUS_SALES
是相同的,它们是PRODUCT
通过产品 ID 关联的。
我想获得给定产品类别在英国和澳大利亚的销售联盟,所以我使用这个查询:
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'
现在,这很好用,但我不确定它是否是最佳的。具体来说,我认为产品表被扫描两次以将其限制为
WHERE p.category = 'electrical'
.
真的是这样吗?或者 MySQL 是否会缓存第一个过滤器的结果以用于第二个选择?
其次,有没有更好的方法来编写这个查询?
我的产品和销售表都将包含数百万条记录,因此性能很重要。
谢谢!