Sql-Server

非聚集索引是否對行順序做出任何保證?

  • May 10, 2018

我有一個開發人員希望在執行沒有 order by 的 select 語句時,表中的行按照插入的順序排列。開發人員建議從聚集索引更改為非聚集索引。

通過將索引從聚集索引更改為非聚集索引,這是否可以保證行在表中出現的順序?

這個問題主要是出於我的好奇心;我將建議改用身份列,但這個請求讓我思考。可以使用時間戳,但有可能同時插入行。

在此先感謝您的幫助。

如果您需要在查詢結果中排序,請輸入ORDER BY. 就是這麼簡單。

查看 SQL Server 架構師 Conor Cunningham 的這篇文章,它幾乎總結了這個主題:

絕對不是 - 沒有 ORDER BY 行順序是永遠不能保證的。

選擇的執行計劃可能會導致想要的順序,但如果是這樣,那是偶然的。

儲存順序與結果順序 DBA.SE 執行緒

引用自:https://dba.stackexchange.com/questions/206241