Sql-Server

為什麼 SSMS 在表格頂部而不是底部插入新行?

  • March 13, 2021

每當我在 SQL Server Management Studio 2008(數據庫是 SQL Server 2005)的表中手動插入一行時,我的新行就會出現在列表的頂部而不是底部。我正在使用身份列,這會導致類似

id  row
42 first row
1 second row
2 third row

獲取行且未明確排序時。TOP 1當為 Web 應用程序獲取行並更改查詢返回的內容時,這會導致不同的外觀。

我知道我可以order by,但為什麼會這樣?我的大部分數據是通過 Web 應用程序插入的,來自該應用程序的所有插入都會導致先進先出的順序,例如,最新的插入位於底部,因此 id 都在一行中。伺服器或 Management Studio 中是否有一些設置導致這種不正確的排序?

在 SQL 世界中,順序不是一組數據的固有屬性。ORDER BY因此,除非您使用子句查詢數據,否則您無法從 RDBMS 保證您的數據將按特定順序返回 - 甚至以一致的順序返回。

克雷格弗里德曼

將 TOP 與 ORDER BY 結合使用可以為返回的行集增加確定性。如果沒有 ORDER BY,返回的行集取決於查詢計劃,甚至可能因執行而異。

ORDER BY如果您希望結果集中有明確定義且一致的順序,請始終使用。永遠不要依賴數據庫如何在磁碟上儲存行(例如,通過聚集索引)來保證查詢中數據的特定順序。

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