在where子句中使用OR条件的更有效的替代方法是什么?
Update X
set
x.col1 = y.col1,
x.col2 = y.col2,
x.col3 = y.col3,
x.col4 = y.col4
from x
join y
on x.ID = y.ID
WHERE
x.col1 <> y.col1 OR
x.col2 <> y.col2 OR
x.col3 <> y.col3 OR
x.col4 <> y.col4
答案 0 :(得分:0)
备选方案:
Update X
set
x.col1 = y.col1,
x.col2 = y.col2,
x.col3 = y.col3,
x.col4 = y.col4
from x
INNER join (
SELECT id,col1,col2,col3,col4 FROM y
EXCEPT
SELECT id,col1,col2,col3,col4 FROM x
) y ON y.id = x.id
答案 1 :(得分:0)
只要没有关于表锁定等的其他性能问题或业务规则,那么这是编写这个简单示例的正确方法。 Anon列出了一个可能会或可能不会更好的替代品。性能调优需要了解系统中所有不同的移动组件,而不仅仅是一个简单的语句,因此,为了获得进一步的帮助,我们需要有关表格模式和索引的详细信息。