我有三个 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 是否会缓存第一个过滤器的结果以用于第二个选择?
其次,有没有更好的方法来编写这个查询?
我的产品和销售表都将包含数百万条记录,因此性能很重要。
谢谢!