首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TSQL --优化器如何处理未使用的表的联接

TSQL --优化器如何处理未使用的表的联接
EN

Stack Overflow用户
提问于 2019-04-10 15:42:08
回答 1查看 206关注 0票数 3

TSQL --优化器如何处理未使用的表

代码语言:javascript
复制
SELECT table1.col1, table2.col1, table2.col2  -- etc.
FROM dbo.table1
LEFT JOIN dbo.table2
on (table1.id = table2.id)
LEFT JOIN dbo.table3
on (table1.id = table3.id) 

在上面的简单示例中,显然不需要表3,但是可以存在更复杂的情况。

问题:查询优化器可以确定不需要表3的联接吗?如果是这样的话,如果没有手动从查询中删除table3,那么它是否可能会错过对更复杂查询的其他优化?

我使用SSMS 14.017作为基础SQL数据库,选择@@version = Microsoft 2014 (SP3)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 15:45:30

是的,查询优化器可以跳过table3,因为它在SELECT列表中没有引用,连接条件是LEFT OUTER JOIN,所以没有过滤。

相关:10不依赖Lukas Eder的成本模型的酷SQL优化

  • 不需要的表访问
  • 加入消除

连接消除:高级SQL使用的一个基本优化特性

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55616553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档