当不是所有值都存在时,最有效地更新表记录的最佳做法是什么(在我的情况下使用主键)?
想象:
PRIMARY_KEY1, COLUMN_2, COLUMN_3, COLUMN_4, COLUMN_5, COLUMN_6, ...
我总是得到像(PRIMARY_KEY1, COLUMN_5, COLUMN_4)
或(PRIMARY_KEY1, COLUMN_2, COLUMN_6, COLUMN_3)
这样的元组,并希望以最快的方式更新它们,而无需对所有其他值进行数据库查找。
由于我必须非常快,我想使用类似批处理的语句来防止大量数据库请求。
感谢所有回复!
答案 0 :(得分:1)
您可以通过期望SQL在行访问时填写值来“欺骗”。例如,这种声明:
UPDATE MyTable SET (column_1, column_2, ..., column_6)
= (COLAESCE(@suppliedValue1, column_1),
COLAESCE(@suppliedValue2, column_2),
...,
COLAESCE(@suppliedValue6, column_6))
WHERE primary_Key1 = @primaryKey
然后,在填写参数时,只留下未被覆盖的任何内容null
......你应该做得很好。
答案 1 :(得分:0)
您不需要更新SQL中的整个行。只需使用UPDATEs SET语法。
UPDATE table SET COLUMN_5 = 'foo', COLUMN_4 = 'goo' WHERE PRIMARY_KEY1 = 'hoo';
答案 2 :(得分:0)