重复优化MySQL查询

时间:2016-09-28 05:44:23

标签: mysql sql

我有以下查询检查表的两列是否为in另一列 查询有效,我希望您可以优化呼叫,因为它们是相同的。我怀疑是否存在性能损失,因为对同一查询进行了两次调用

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
  

尝试加入,是一个有效的选择吗?还有其他方法可以完成这项任务   更高效?非常感谢你

3 个答案:

答案 0 :(得分:1)

使用var delSiteFuseId = await dataClient.For<DeliverySiteFuse>() .Filter(x => x.Name gt 125) .FindEntryAsync(); 时出现性能问题,您可以使用OR代替:{/ p>

UNION

<强> tutorial

答案 1 :(得分:1)

您可以使用EXISTS,它可以从各个方面比IN更有效:

{
"employees" : [ 
    {
        "name" : "XXX",
        "id" : "1",
        "Salary" : [ 
            {
                "Month" : "XXXX",
                "Amount" : "XXXX",
            }, 
            {
                "Month" : "XXXX",
                "Amount" : "XXXX",
            }, 
            {
                "Month" : "XXXX",
                "Amount" : "XXXX",
            }
        ]
    }, 
    {
        "name" : "YYY",
        "id" : "2",
        "Salary" : [ 
            {
                "Month" : "YYYY",
                "Amount" : "YYYY",
            }, 
            {
                "Month" : "YYYY",
                "Amount" : "YYYY",
            }, 
            {
                "Month" : "YYYY",
                "Amount" : "YYYY",
            }
        ]
    }
],
}

答案 2 :(得分:0)

正如您已经完成的那样

SELECT a.name, a.lastname
FROM TABLE_A as a
INNER JOIN TABLE_B as b on a.name=b.name OR a.lastname= b.lastname