如何加快SQL Server中多个更新查询的性能

问题描述 投票:0回答:1

是否有特定的策略或最佳实践可用于加快 SQL Server 中的更新操作,特别是在处理大型数据集或复杂的更新条件时?

我利用

SqlBulkCopy
来提高多个插入查询的速度。现在,我正在尝试提高多个更新查询的执行速度。我已经探索了
MERGE
语句作为一个选项,但我不确定它与传统更新查询相比的相对速度。

使用正常更新查询的结果:

SQL Server parse and compile time: 
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time: 
CPU time = 0 ms, elapsed time = 24 ms.
SQL Server Execution Times:
CPU time = 0 ms,  elapsed time = 15 ms.
(101 row(s) affected)

使用

MERGE
更新查询的结果:

SQL Server Execution Times:
CPU time = 0 ms,  elapsed time = 62 ms.
(101 row(s) affected)
sql-server performance sql-update
1个回答
0
投票

SQL Server 性能通常取决于索引。就您而言,索引可能会在两个地方对您有所帮助或有害:

  • 您是否正在搜索要根据属于索引的列进行更新的记录?如果没有,您可以尝试创建临时索引(确保完成后删除它或在这些列上添加永久索引。如果您正在搜索的值是clustered索引的一部分,那么它将甚至更快,但每个表只能有一个聚集索引,因为该索引决定了记录的物理顺序。

  • 您是否正在更新属于其他索引的列?这会稍微减慢速度,因为这些索引必须更新。

除此之外,您还必须让 DBA 查看查询计划和其他统计信息,看看是否有任何可以优化的地方。仅仅看 SQL 通常是不够的。

UPDATE
MERGE
而言,如果您仅更新记录,那么
MERGE
的执行速度可能不会比直接更新快。事实上,它可能会执行得更慢,因为它会看到哪些记录需要进行
INSERT
ed,如果您只更新记录,这将是浪费时间。

© www.soinside.com 2019 - 2024. All rights reserved.