2012-10-27 31 views
1

我使用SQL Server 2008 R2,並有一個id列作爲identity(1,1)。如果我想按id列排序查詢,那麼必須使用Order By ID或不必要。標識列和在查詢中使用的順序

編輯: 我在ID列上有一個獨特的聚集索引。做這個索引保證我的查詢默認按id排序。

+0

你的意思是默認ID按ID排序嗎? – codingbiz

+1

如果您想要按ID排序,請指定它。 – codingbiz

+0

@codingbiz:是的默認情況下,我的查詢按ID排序? –

回答

2

在ORDER BY被省略的情況下,訂單是不可預知的。由於這樣的SQL語句不要求顯式的順序,因此SQL Server可以在準備就緒時返回結果。

這意味着:

  • 的順序是完全依賴於執行計劃。

  • 順序返回一些過濾條件,可以在其他 情況不同

  • 聚集索引可以在某些情況下甚至不使用一些執行計劃。在這些情況下(不使用時) - 不考慮其順序。

對於某些select可以使用其他覆蓋索引,(這不是按ID排序)。這將導致「意外」訂單。

如果我們需要得到有序列表,我們必須使用明確的ORDER BY子句。然後我們可以確定訂單。只有這樣。

2

沒有默認排序順序。即使該表格有聚簇索引,也不保證以該順序得到結果。

必須指定ORDER BY條款到您想要的排序順序。

1

當未使用「ORDER BY」時,不保證表格的順序。

相關問題