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

查询优化器是否会在计划创建时重写查询移除冗余列?

查询优化器冗余列处理与视图重写疑问

核心疑问与测试过程

  • 我认为查询优化器理应在计划创建阶段移除冗余列,避免无意义的缓存占用,但一直找不到相关官方证据。
  • 测试环境:290k行的数据集,带有主键和复合索引
  • 测试操作:
    • 先执行缓存清空命令:DBCC FreeProcCache; DBCC DropCleanBuffers; DBCC FreeSystemCache('sql plans');
    • 运行包含7个冗余列的派生表查询,Profiler监控结果:CPU=92,Reads=23703
    • 再次清空缓存后运行无冗余列的简化查询,监控结果:CPU=78,Reads=23476
  • 测试发现:两次查询的执行计划相似,怀疑优化器已经重写了查询,但无法找到直接的证实依据。

延伸疑问

  • 当查询包含SCD Type 2逻辑、带有PII数据的冗余视图时,SQL Server查询优化器是否会对查询进行重写?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:08:27