1
此查询需要16秒运行SQL Server 2008 R2的 - 看似矛盾的加入导致查询很慢
SELECT
WO.orderid
FROM
WebOrder as WO
INNER JOIN Addresses AS A ON WO.AddressID = A.AddressID
LEFT JOIN SalesOrders as SO on SO.SO_Number = WO.SalesOrderID
如果我注释掉任何的连接,它运行在一小部分一秒。例子:存在
SELECT
WO.orderid
FROM
WebOrder as WO
INNER JOIN Addresses AS A ON WO.AddressID = A.AddressID
-- LEFT JOIN SalesOrders as SO on SO.SO_Number = WO.SalesOrderID
或
SELECT
WO.orderid
FROM
WebOrder as WO
-- INNER JOIN Addresses AS A ON WO.AddressID = A.AddressID
LEFT JOIN SalesOrders as SO on SO.SO_Number = WO.SalesOrderID
注
- 约40,000记录每个在表SalesOrders表和位址,
- 我有在ON子句中使用的所有字段的索引或PKeys。
的慢版的执行计划(SalesOrders的加入注释掉)
快速版本
012执行计划为什么这些连接在一起使用时会导致从0.01秒到16秒?
您是否尝试过索引重建,更新统计信息和'DBCC FREEPROCCACHE'? –
重建相关表中的索引修复了它。请作为答复发布。 –
很高兴我能帮到你。回答是根据要求发布的。 –