Sql-Server
非聚集索引是否對行順序做出任何保證?
我有一個開發人員希望在執行沒有 order by 的 select 語句時,表中的行按照插入的順序排列。開發人員建議從聚集索引更改為非聚集索引。
通過將索引從聚集索引更改為非聚集索引,這是否可以保證行在表中出現的順序?
這個問題主要是出於我的好奇心;我將建議改用身份列,但這個請求讓我思考。可以使用時間戳,但有可能同時插入行。
在此先感謝您的幫助。
如果您需要在查詢結果中排序,請輸入
ORDER BY
. 就是這麼簡單。查看 SQL Server 架構師 Conor Cunningham 的這篇文章,它幾乎總結了這個主題:
絕對不是 - 沒有 ORDER BY 行順序是永遠不能保證的。
選擇的執行計劃可能會導致想要的順序,但如果是這樣,那是偶然的。