【发布时间】:2019-07-31 09:10:33
【问题描述】:
我有这样一个更新查询:
SET NOCOUNT ON;
DECLARE @rows INT, @count INT, @message VARCHAR(100);
SET @rows = 1;
SET @count = 0;
WHILE @rows > 0
BEGIN
update top(100000) [dbo].[Table]
set T1=212
where T1=-10
SET @rows = @@ROWCOUNT;
END
我的表格包含超过 3 亿行。我已将 Azure SQL 数据库设置为 Premium P2,具有 250 个 DTU。如图所示,它的 DTU 使用率几乎保持在 70%。
我现在的问题是:如果我将 DTU 扩展到 500,我的更新查询能否运行得更快?
【问题讨论】:
-
要回答您的问题,我怀疑增加 DTU 将有助于此更新查询。您隐含的问题是如何使批量更新运行得更快,我们需要更多信息来回答这个问题。 T1 列是否被索引?您希望更新多少行?
-
T1没有索引,应该更新2亿多行
-
假设表有聚集索引,我建议你改为按聚集索引键的范围进行更新。这样,您就不会在每批中执行迭代扫描,也不会提高并发性。如果您需要帮助,请将表格 DDL 添加到您的问题中。
-
也没有聚集索引
-
一般来说,每个表都应该有一个聚集索引。表上有索引吗?如果是这样,您可以使用其中之一按键范围进行批处理。
标签: performance azure tsql azure-sql-database