You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSSQL 2022中Merge首次执行后变慢的索引问题排查

MSSQL 2022 MERGE语句二次执行性能异常求助

问题背景

使用MSSQL 2022,需将源临时表#InputInterimTags中目标表dbo.Aspects不存在的行插入,唯一性由Tpid、AspectKey、AspectValue、DictAspectsId四列确定。源临时表共156,289行,目标表初始无数据。

执行现象

  • MERGE语句表现:首次执行MERGE ... WHEN NOT MATCHED BY Target耗时不足10秒,成功插入156,289行;二次执行无插入操作,但耗时约8分钟。执行计划显示内存授予440MB,预估行数358,028。
  • INSERT WHERE NOT EXISTS表现:首次和二次执行均耗时数秒,性能正常。执行计划无内存授予,预估行数156,289。

表与索引结构

Create Table #InputInterimTags ( 
    AspectKey VarChar(400) , 
    AspectValue VarChar(400) , 
    InputInterimId Int , 
    Tpid Int 
)
Create Clustered Index #InputInterimTags_Pk On #InputInterimTags (Tpid,AspectKey,AspectValue)
... -- 临时表数据填充完成
Update Statistics #InputInterimTags With Fullscan

Create Table dbo.Aspects
(
    AspectsId Int Identity(9,1) Primary Key,
    RowStampUtc Datetime2(7),
    DictAspectsId Int,
    AspectKey VarChar(400),
    AspectValue VarChar(400),
    DictAspectsAssociationStatesId Int,
    Tpid BigInt
)
Create Index Aspects_Ix01 On dbo.Aspects (Tpid,AspectKey,AspectValue) Include (DictAspectsId)

已尝试操作

已调整Aspects表的复合/单列索引、排序规则及额外过滤条件,问题仍未解决,寻求可行的排查或解决方法。

内容的提问来源于stack exchange,提问作者Snowy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:09:52