【发布时间】:2016-04-04 11:07:45
【问题描述】:
我在 Sql Server 2014 上运行。我正在尝试执行以下查询:
UPDATE [dbo].[Table1]
SET Table1.[PaymentId] = ST.PaymentId
,Table1.[ServiceId] = ST.ServiceId
...several more fields
FROM [dbo].[StagingTable] as ST
WHERE
Table1.Id = ST.Id
Table1 在 Id 上有标识和索引,但 StagingTable 没有 Id 的索引。我省略了 StagingTable 上的索引,因为我需要非常快速地批量插入数据。我在每个表中大约有 400 万条记录。
此查询似乎运行得很慢,因为它最初在执行计划中对 StagingTable 进行表扫描,并对 Table1 进行 Custered Index Seek。但是,我想在 StagingTable 中按 Id 排序,然后执行应该是聚集索引扫描而不是搜索。
有人知道如何在更新查询中执行此操作吗?我将这作为 SSIS 工作的一部分,因此我试图在一个查询中完成所有工作。
【问题讨论】:
-
你应该添加两个表之间的关系
标签: sql sql-server performance