【发布时间】:2012-03-20 21:57:55
【问题描述】:
我环顾四周,似乎找不到答案,但如果我公然忽略了它,请随时直接指出它。
我有一个更新表的查询。更新取决于表的顺序。
SQL 更新语句是否直接在表中逐行工作? Update 语句是直接从表中查看每一行,还是从开始时执行的表的“缓存选择”中查看每一行。我的数据在表格中呈级联形式,但我不确定它是否能正常工作。
其次,要执行此更新,我使用Update - From 语句,其中表连接到另一个,然后返回到自身。 order by 语句会在更新发生之前对数据进行排序,还是执行其他操作?
我使用的是 SQL Server 2008 r2。
更新:这与我问的另一个问题 here 有关。 该更新适用于如下所示的数据:
Id1 Id2
-----------
100 50
120 70
70 50
34 20
50 40
40 10
总体而言,应该将信息从 Id1 更新到 Id2,以便上述更新可以有效更新以下数据,这是上述数据的缩减:
Id1 Id2
-----------
100 10
120 10
34 20
我看过它并假设,'嘿,如果它在 desc 中从上到下工作,则无需担心这样做,因为更新将按顺序发生并执行。但显然这是不正确的。
【问题讨论】:
-
没有“表格的顺序”
-
确实,我知道(在你提醒我之后!),我想我要问的是我能保证更新的某种订单吗?
-
你能不能不使用 SQL Management Studio 中的执行计划来查看查询将如何执行以及以什么顺序执行?
-
行物理更新的顺序通常不重要。如果您尝试做一些依赖于行的更新后版本的事情,那么它很可能不起作用。 SQL Server 将使用行的更新前版本。它可以产生影响的一个例外是使用“古怪的更新”技术。 Jeff Moden 有一个先决条件列表which he asserts 将保证更新按聚集索引键顺序进行。
-
'从桌面向下级联'怎么做?对于需要这种行为类型的任何应用程序,我都会持怀疑态度,尤其是如果您曾经想要在多线程环境中执行处理。通常,您会想要为此使用 OLAP 函数...
标签: sql sql-server-2008 sql-update