SQL的替代方法使用OR的条件

时间:2014-01-16 20:18:46

标签: sql sql-server stored-procedures where predicate

在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 

2 个答案:

答案 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列出了一个可能会或可能不会更好的替代品。性能调优需要了解系统中所有不同的移动组件,而不仅仅是一个简单的语句,因此,为了获得进一步的帮助,我们需要有关表格模式和索引的详细信息。