如果我们在最后有一个ORDER BY子句,是什么导致查询需要更长的时间?
如果我在没有Order BY的情况下运行查询,它需要一瞬间,但抛出ORDER BY并且它的MINUTES !!
有这个已知的原因吗?
SELECT top 100 a.UniqueID
,a.SomeID
,a.ContentID
,SortOrder
,b.ValueOfMine
INTO #ContentHistory
FROM widgetHistory.dbo.CustomerProductContent a WITH (NOLOCK)
LEFT JOIN widgetHistory.dbo.ProductContent b WITH (NOLOCK) ON a.ContentID = b.ContentID
LEFT JOIN widgetHistory.dbo.SomeThings k WITH (NOLOCK) ON a.SomeID = k.SomeID
LEFT JOIN widgetHistory.dbo.SubscriptionContents c WITH (NOLOCK) ON b.ContentID = c.ContentID
AND c.SubscriptionID = k.SubscriptionID
WHERE c.ContentStatus = 'GO'
ORDER BY UniqueID
Run Code Online (Sandbox Code Playgroud)
它甚至不会完成所以我无法查看执行计划..
如果没有ORDER BY,SQL Server会在计算完成后立即为您计算前100行.
使用ORDER BY,SQL Server必须计算所有行,对它们进行排序,然后它才能为您提供所要求的100行.
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |