當我查看SELECT查詢的執行計劃時,我經常會注意到在CPU中發生了排序。問題是我的查詢中沒有任何順序,它看起來像排序的原因是爲查詢中使用的索引列設置的升序/降序。在執行計劃中隱式執行的順序
爲什麼會發生這種情況,它可以關閉(我應該)?
當我查看SELECT查詢的執行計劃時,我經常會注意到在CPU中發生了排序。問題是我的查詢中沒有任何順序,它看起來像排序的原因是爲查詢中使用的索引列設置的升序/降序。在執行計劃中隱式執行的順序
爲什麼會發生這種情況,它可以關閉(我應該)?
結果使用索引automaticaly進行排序。您可以指定一個order by子句。
這是索引的目的,對數據進行排序以快速找到一些行。
SQL Server中有相當多的操作可能會導致將排序添加到計劃中,而在查詢中不存在ORDER BY
。
DISTINCT
和UNION
將導致排序以擺脫重複。
GROUP BY
可能需要在GROUP BY
列sort
如果計劃有一個流聚合,而不是一個哈希總有是返回所需的數據預排序沒有合適的索引。
段迭代器(用於排名函數)要求其輸入在段列上排序。
你有特定的例子嗎?
你能舉個例子嗎? – 2011-03-16 17:36:28