【发布时间】:2020-02-14 00:08:05
【问题描述】:
left join with or condition 会降低查询性能,所以什么可以替代 left join 或 condition
select tableb.columnA, tableb.columnB,tablec.id,tabled.id,tablee.id
from tableA tableA
LEFT JOIN tableb tableb ON ((tableb.columnA = tableA.id)
OR (tableb.columnB = tableA.id))
LEFT JOIN tablec tablec ON tablec.Id = tableb.columnA
LEFT JOIN tabled tabled ON tabled.id = tableb.columnB
LEFT JOIN tablee tablee ON tablee.Id= tableb .id
【问题讨论】:
-
为什么要涉及 tablec 和 tabled,因为你没有选择它们的任何列?
-
tableA.id、tableb.columnA和tableb.columbB是否都已编入索引?我怀疑您可能会发现它们不是,因此添加OR条件的影响远大于应有的效果 -
@Martin 是的,所有列都已编入索引
-
@jarlh 我需要这个表格数据,但我忘了添加这个问题
标签: sql sql-server performance join left-join