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

添加WHERE子句条件后SQL Server查询性能骤降问题排查

SQL Server 2022查询性能骤降问题

在SQL Server 2022 Express(v16.0.4120.1)环境中,给查询的WHERE子句添加一行简单条件后,性能出现断崖式下降,具体情况如下:

慢查询(耗时15秒以上)

SELECT 
    HSP.ServiceProviderID AS SP, *
FROM 
    ALPCensus
LEFT JOIN 
    ALPPriorApproval PA ON PA.SSNumber = ALPCensus.SSNumber  
LEFT JOIN 
    ALPHeader ON ALPHeader.PartnerID = PA.PartnerID
LEFT JOIN 
    HomeServiceProviders HSP ON HSP.ServiceProviderID = ALPHeader.ServiceProviderID
LEFT JOIN 
    HomeMastResident HMR ON HMR.SSNumber = ALPCensus.SSNumber  
WHERE 
    [Day] BETWEEN PA.StartDate AND PA.EndDate
    AND [Day] < '2024-05-21'
    AND PA.IsPending = 0
    AND HSP.IsCapitation = 0
    AND [Status] IN ('*', 'P')
    AND Billed = 0
    AND HSP.ServiceProviderID = 136   -- 该行条件为快查询所缺失

快查询(移除最后一行条件,耗时不足1秒)

SELECT 
    HSP.ServiceProviderID AS SP, *
FROM 
    ALPCensus
LEFT JOIN 
    ALPPriorApproval PA ON PA.SSNumber = ALPCensus.SSNumber  
LEFT JOIN 
    ALPHeader ON ALPHeader.PartnerID = PA.PartnerID
LEFT JOIN 
    HomeServiceProviders HSP ON HSP.ServiceProviderID = ALPHeader.ServiceProviderID
LEFT JOIN 
    HomeMastResident HMR ON HMR.SSNumber = ALPCensus.SSNumber  
WHERE 
    [Day] BETWEEN PA.StartDate AND PA.EndDate
    AND [Day] < '2024-05-21'
    AND PA.IsPending = 0
    AND HSP.IsCapitation = 0
    AND [Status] IN ('*', 'P')
    AND Billed = 0

关键现象与排查信息

  • 仅添加AND HSP.ServiceProviderID = 136这一行条件,就导致查询性能急剧下降;但添加AND HSP.ServiceProviderID IS NOT NULL时,查询仍保持快速执行
  • 已确认HSP.ServiceProviderID为int类型,服务器资源充足,相关表索引配置齐全
  • 数据库设置无异常
  • 执行计划差异:慢查询采用了低效的执行路径,快查询则使用了高效的连接策略;当将数据库兼容级别改为2008或2012后,原慢查询的执行计划恢复高效逻辑,查询瞬时完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:05:06