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表扫描次数太频繁,请问如何更改比较合理。
对于这种情况,您可以考虑使用子查询来优化查询效率。具体操作如下:
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]