yuanbb0820 发表于 2024-2-20 10:59:03

left join需要重复关联同一张表



tabA表,

此表字段:

code1,code2,code3



tabB表:

此表字段:

id,code,codeName



查询:

select

b1.codeName,

b2.codeName,

b3.codeName

from tabA a

left join tabB b1

on a.code1=b1.code



left join tabB b2

on a.code2=b2.code



left join tabB b3

on a.code3= b3.code



where 1=1

这种查询,对于tabB表扫描次数太频繁,请问如何更改比较合理。

FishC 发表于 2024-2-20 10:59:21

对于这种情况,您可以考虑使用子查询来优化查询效率。具体操作如下:

select
b1.codeName,
b2.codeName,
b3.codeName
from tabA a
left join (
select code, codeName from tabB
) b1 on a.code1 = b1.code
left join (
select code, codeName from tabB
) b2 on a.code2 = b2.code
left join (
select code, codeName from tabB
) b3 on a.code3 = b3.code
where 1=1;

通过在每个左连接中使用子查询,将tabB表的扫描次数减少到一次。这样可以提高查询效率。

希望能帮到您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: left join需要重复关联同一张表