TSQL --优化器如何处理未使用的表
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)。
发布于 2019-04-10 15:45:30
是的,查询优化器可以跳过table3,因为它在SELECT列表中没有引用,连接条件是LEFT OUTER JOIN,所以没有过滤。
相关:10不依赖Lukas Eder的成本模型的酷SQL优化
https://stackoverflow.com/questions/55616553
复制相似问题