Sql-Server
為什麼 SSMS 在表格頂部而不是底部插入新行?
每當我在 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
如果您希望結果集中有明確定義且一致的順序,請始終使用。永遠不要依賴數據庫如何在磁碟上儲存行(例如,通過聚集索引)來保證查詢中數據的特定順序。