gpt4 book ai didi

TSQL——优化器如何处理与未使用表的连接

转载 作者:行者123 更新时间:2023-12-03 17:20:35 25 4
gpt4 key购买 nike

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,但可能存在更复杂的情况。

问题:TSQL 查询优化器是否能够确定不需要与表 3 的 JOIN?如果是这样,如果未从查询中手动删除 table3,它是否会错过针对更复杂查询的其他优化?

我将 SSMS 14.017 与底层 SQL 数据库一起使用 select @@version = Microsoft SQL Server 2014 (SP3)

最佳答案

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


相关:10 Cool SQL Optimisations That do not Depend on the Cost Model by Lukas Eder :

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

JOIN Elimination: An Essential Optimiser Feature for Advanced SQL Usage

关于TSQL——优化器如何处理与未使用表的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55616553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com