首頁 > 資料庫 > mysql教程 > SQL Server 2008 與 SQL Server 2012 SELECT 查詢之間的行順序有何不同?

SQL Server 2008 與 SQL Server 2012 SELECT 查詢之間的行順序有何不同?

Mary-Kate Olsen
發布: 2025-01-14 10:52:42
原創
201 人瀏覽過

How Does Row Order Differ Between SQL Server 2008 and SQL Server 2012 SELECT Queries?

SQL Server 2008 與 2012:SELECT 查詢行順序差異

問題:

從 SQL Server 2008 升級到 SQL Server 2012 發現了一個關鍵差異:不含 SELECT 子句的 ORDER BY 查詢中的預設行順序。雖然 SQL Server 2008 通常以看似一致的順序傳回一行,但 SQL Server 2012 並沒有提供這樣的保證。

影響:

此變更顯著影響依賴此隱式排序的應用程序,特別是影響跨 5 個資料庫的 2500 多個預存程序。 全面添加 ORDER BY 子句是不切實際的。 開發人員正在尋求有效的解決方案,甚至考慮降級到 SQL Server 2008。

為什麼明確排序至關重要:

不建議降級。 對預設行順序的期望從根本上來說是有缺陷的。 SQL 對集合進行操作,而集合本質上缺乏固有的順序。正如 Itzik Ben-Gan 在「Microsoft SQL Server 2012 T-SQL 基礎知識」中所強調的那樣,除非明確排序,否則查詢結果是無序的。

隱式順序的不可預測性:

開發人員必須始終使用明確的ORDER BY子句。 查詢最佳化器可能會重新排列操作以提高效能,從而可能改變任何感知的預設順序。

一致行順序的最佳實務:

為了確保可預測的結果:

  • 總是 在行順序相關的 ORDER BY 語句中包含 SELECT
  • 如果預設順序很重要,請建立一個強制執行該順序的索引。
  • 請注意,即使使用 ORDER BY,不同查詢計劃的順序也可能會有所不同,尤其是在並行執行時。

以上是SQL Server 2008 與 SQL Server 2012 SELECT 查詢之間的行順序有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板