我有以下查询来检查表的两列是否在
另一个中
查询有效,我希望您可以优化调用,因为它们是相等的。我怀疑是否会因为对同一查询进行两次调用而导致性能损失
SELECT name,lastname FROM TABLA_A
WHERE
name IN (
SELECT name FROM TABLE_B
)
OR
lastname IN (
SELECT lastname FROM TABLE_B
)
另一种方式
SELECT a.name,a.lastname
FROM TABLE_A as a
join TABLE_B as b on a.name=b.name
or a.lastname= b.lastname
try to join, is a valid option? there are other ways to make this task more efficient? thank you very much
最佳答案
使用 OR
存在性能问题,您可以使用 UNION
代替,如下所示:
SELECT name, lastname
FROM TABLE_A
WHERE name IN (
SELECT name
FROM TABLE_B)
UNION -- If there is not any duplicate use `UNION ALL` instead
SELECT name, lastname
FROM TABLE_A
WHERE lastname IN (
SELECT lastname
FROM TABLE_B);
关于mysql - 优化 MySQL 的重复查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738900/