mysql - 优化 MySQL 的重复查询

标签 mysql sql

我有以下查询来检查表的两列是否另一个中 查询有效,我希望您可以优化调用,因为它们是相等的。我怀疑是否会因为对同一查询进行两次调用而导致性能损失

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);

[SQL Fiddle Demo]

关于mysql - 优化 MySQL 的重复查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738900/

相关文章:

MySQL 错误 : sql_mode=only_full_group_by

mysql - 跨 150 万行表的随机查询索引

MySQL全文搜索并按相关性+时间排序

sql - MSSQL - 左连接右表中包含空值

sql - 使用按日期范围分组的 Django 聚合以降低分辨率

java - 为什么打印 [[Ljava.lang.Object;@12f29d9, [Ljava.lang.Object;@1648f32]

python - MySQL自增两部分主键

MySQL语句想要查询WordPress数据库中相关的自定义帖子类型帖子

sql - 如何衡量数据库索引的成本?

sql - 这是SQL注入(inject)攻击吗 +and+(5=5+xor+2=9)--+a