0

假设我们有 MS SQL Server 数据库和表 A。然后,我们执行如下操作:

select A.a1 
into #temp1
from A

这个链接说:“如果内存可用,表变量和临时表都会在内存中创建和处理(数据缓存)。”

假设我们在 #temp1 中有 100 行,它们很容易放入内存中……所以现在整个 #temp1 都在内存中。但是,我们执行以下语句:

UPDATE #temp1 SET a1 = a1 + 1

这是否涉及一些 IO 操作?例如,是否将某些内容写入 temp_log (我认为,不是在 RAM 中)?或者,因为我们现在正在进行更新,所以整个#temp1 被移动到了 hdd...?

4

1 回答 1

0

My understanding is that no log is kept for temp tables, as tempdb is cleared on every restart.

Update: Logging occurs in tempdb, but it is reduced: http://msdn.microsoft.com/en-ca/library/ms190768.aspx;

Perhaps a table-valued variable is suitable instead of a table in tempdb: http://msdn.microsoft.com/en-us/library/ms175010.aspx

于 2013-03-13T19:22:24.957 回答