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

SQL Server性能优化:WHERE子句OR语句动态替代方案

优化方案

你遇到的性能和动态性问题都可以通过直接关联InitClient表解决,完全不需要硬编码客户ID,也可以避免低效的笛卡尔积和OR条件判断。

优化后SQL代码

SELECT      
    s.Material
    ,s.Stock
    ,s.PostingDate
    ,s.Client
FROM Stock s
INNER JOIN InitClient ic 
    ON s.Client = ic.Client
WHERE s.PostingDate > ic.InitDate
-- 如果需要包含等于InitDate的记录,把上面的>改成>=即可匹配你给出的示例输出

方案优势

  • 动态适配:不需要硬编码任何客户ID,InitClient表新增/删除/修改客户规则时,完全不需要调整SQL代码
  • 性能提升:
    1. 去掉了原写法的笛卡尔积关联(ON 1=1),避免全表扫描+数据膨胀
    2. 去掉了OR条件,数据库可以直接走索引匹配

额外性能优化建议

  1. 字段类型优化:把Stock表的PostingDate字段从varchar改成date类型,避免隐式类型转换导致索引失效
  2. 索引配置:
    • 给InitClient表的Client字段设为主键/唯一索引
    • 给Stock表创建联合索引 idx_client_postingdate (Client, PostingDate),覆盖关联和过滤条件,查询可以直接走索引不需要回表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:03