更改连接字段

时间:2017-06-15 15:08:16

标签: sql-server performance

我使用的是SQL Server 2008,我注意到在运行这两个几乎相同的查询时性能存在巨大差异。

快速查询(只需不到一秒钟):

SELECT Season.Description, sum( Sales.Value ) AS Value
FROM Seasons, Sales
WHERE Sales.Property05=Seasons.Season
GROUP BY Seasons.Description

慢查询(大约需要5分钟):

SELECT Season.Description, sum( Sales.Value ) AS Value
FROM Seasons, Sales
WHERE Sales.Property04=Seasons.Season
GROUP BY Seasons.Description

唯一的区别是表SALES和SEASONS在快速查询中加入Property05,在慢速查询中加入Property04。

这两个属性字段都不在密钥中,也不在索引中,所以我真的不明白为什么两个查询之间的执行计划和性能如此不同。

有人可以启发我吗?

编辑:查询是由商业智能程序自动生成的,所以我没有权力。我通常会使用JOIN ON sintax,虽然我不知道这是否有所作为。

慢查询计划:https://www.brentozar.com/pastetheplan/?id=HkcBc7gXZ

快速查询计划:https://www.brentozar.com/pastetheplan/?id=rJQ95mgXb

请注意,上面的查询已简化为必要部分。查询计划更详细。

0 个答案:

没有答案