代码之家  ›  专栏  ›  技术社区  ›  Clark Vera

使用SELECT INTO a#TEMP表时,结果是否记录到事务日志中?

  •  1
  • Clark Vera  · 技术社区  · 6 年前

    通过将UPDATE和JOIN分离为两个查询,我已经能够使用JOIN优化大型表更新。我知道更新是被记录的,但是通过创建一个临时表,我加入了临时表,其中只包含了我感兴趣的更新记录,从而大大缩短了更新时间。

    1 回复  |  直到 6 年前
        1
  •  1
  •   sepupic    6 年前

    我相信这个策略成功的最大原因是 因为命令:SELECT INTO#tentable未被记录和处理 作为日志文件中的大容量副本。

    首先, 在SQL Server中没有未记录的用户数据库操作 (唯一未记录的操作是版本存储,可以是tempdb中的最低工作文件)。

    Bulk 操作也会被记录,但是它们可以 minimally logged simple bulk logged bulk 操作完全记录在 full recovery model .

    SELECT INTO 临时表是“像散装的”,它是 , tempdb SIMPLE .

    在用户数据库中 简单的 BULK LOGGED 恢复模型 也是最低限度的记录。

    The Data Loading Performance Guide 您可以在这里找到最小的日志记录条件: Understanding Logging and Recovery in SQL Server by Paul S. Randal

    这是一篇关于登录的文章 温度数据库 Understanding Logging in Tempdb