2012-04-30 18 views
1

我正在编写一个访问数据库的程序,以确保值是最新的。例如(这不是我真正的问题),我有一个具有独特属性的对象。我想确保数据库保存了相同的唯一值。如果没有,我想更新数据库。这将发生在重复在后台运行的脚本中,以确保该值保持同步。SQL命令的代价:选择与更新

所以我的问题是,选择的价值和比较,然后更新更具成本效益。或者我应该只是自动更新?

我想象的SELECT和比较可能会更有效,然后只是更新所有的时间,但我不确定。

我应该去哪?

谢谢(我很抱歉,如果这是一个愚蠢的问题)。

+0

我想知道您的程序是否拥有对数据库中数据的独占访问权限,或者它是否在多个程序或程序实例之间共享。如果它是第一个,我将同步应用程序中的数据,并且该对象的任何更新都可以立即保存到数据库中。如果你共享数据,那么你不想盲目地更新数据库,或者你会一直废弃其他数据,在这种情况下添加一个版本列,这个列在更新时增加,并检查它是否仍然相同一个更新条件,然后用户决定是否替换数据。 – Quaternion

回答

1

这是一个很好的问题。它需要对SELECT和UPDATE查询有充分的了解。

当您需要使用WHERE更新表中的现有记录时,使用UPDATE来指定需要更新的记录。所以更好使用UPDATE查询。

就成本和时间效率而言,您可以使用不同的查询分析器来分析查询。

UPDATE table_name 
SET value to update 
WHERE some condition to update 
2

我想你可以用一个UPDATE...WHERE SQL调用来做到这一点,而不必进行SELECT调用。这是做到这一点的最快方法。

UPDATE <table> 
SET <data to update> 
WHERE <data is not up to date)