Question

What is a more efficient alternative to using the OR condition in the where clause?

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 
Was it helpful?

Solution

As long as there are no other performance issues or business rules about table locking, etc., then this is the correct way to write this simple example. Anon lists an alternate which may or may not work better. Performance tuning requires knowledge of all the different moving components in the system, not just a simple statement, so for further assistance, we would need details about table schemas and indexing on those tables.

OTHER TIPS

An alternate option:

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top