gpt4 book ai didi

sql - 什么样的索引可以帮助我完成这个 MERGE 查询?

转载 作者:行者123 更新时间:2023-12-03 02:20:12 25 4
gpt4 key购买 nike

我有一个这样的表:

Name | TimeA | TimeB | ValueA | ValueB

而且,我正在执行一些 MERGE 操作,如下所示:

  CREATE TABLE #TEMP1...

INSERT INTO #TEMP1
SELECT Name, Value
FROM dbo.AnotherTable
WHERE ...

MERGE INTO dbo.MyTable AS Target
USING (SELECT Name, Value FROM #TEMP1) AS Source
ON Target.Name = Source.Name
AND Target.TimeA = @TimeA
WHEN MATCHED THEN
UPDATE SET ValueA = Value
WHEN NOT MATCHED THEN
INSERT (Name, TimeA, TimeB, ValueA)
VALUES (Source.Name, @TimeA, @TimeB, Value)

查询执行计划的内容如下:

MERGE -> Table Merge 3% -> Compute Scalar 0% -> 
Top 0% -> Compute Scalar 0% -> Compute Scalar 0% ->
Nested Loops (Left Outer Join) 0% <- Constant Scan 0%
^
|
|
--- Compute Scalar 0% <- Table Spool (Kager Spool) 12% <- Table Scan 86%

但是该计划并没有告诉我索引会提高性能。我认为 (Name,TimeA) 上的非聚集索引应该可以提高性能。有没有更好的方法来实现像这样的 MERGE 查询的性能?

编辑 1:我应该记下表格的大小。平均而言,源始终包含 30-70 行,目标包含 > 3000 万行。

最佳答案

我会考虑

WHEN MATCHED AND ValueA <> Value THEN

您可能正在更新不需要的记录。

关于sql - 什么样的索引可以帮助我完成这个 MERGE 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com