如何更新数据库表中的稀疏值?

时间:2013-01-25 22:16:04

标签: java sql jdbc relational-database

当不是所有值都存在时,最有效地更新表记录的最佳做法是什么(在我的情况下使用主键)?

想象:

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)这样的元组,并希望以最快的方式更新它们,而无需对所有其他值进行数据库查找。

由于我必须非常快,我想使用类似批处理的语句来防止大量数据库请求。

感谢所有回复!

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)

在这里看到这篇文章,

JDBC batch insert performance

阅读它。然后在其他类似帖子的相关链接下查看页面的右栏 您应该立刻找到所需的所有答案。