當沒有使用ORDER BY
時,查詢的默認順序是什麼?SQL:什麼是查詢的默認排序依據?
回答
沒有。根據您查詢的內容以及您的查詢是如何優化的,您可以獲得任何訂單。甚至不能保證看起來相同的兩個查詢將以相同的順序返回結果:如果不指定它,則不能依賴它。
有沒有這樣的訂單禮物。從http://forums.mysql.com/read.php?21,239471,239688#msg-239688
採取ORDER BY丟失時不要依賴順序。
總是指定ORDER BY如果你想要一個特定的訂單 - 在某些情況下,引擎可以消除ORDER BY,因爲它的 做了一些其他的步驟。
- GROUP BY forces ORDER BY。 (這是違反標準的,可以通過使用ORDER BY NULL來避免。)
SELECT * FROM tbl
- 這將執行「表掃描」。如果該表有 從未有過任何刪除/替換/更新,則記錄在插入順序中恰好爲 ,因此您觀察到了這一情況。如果你已經用InnoDB表完成了同樣的語句,他們將 以PRIMARY KEY順序傳遞,而不是INSERT順序。 這是一個基礎實現的神器,不是 所依賴的東西。
很好的回答,它與http://dba.stackexchange和諧一致。 com/q/6051/877,因爲在存儲引擎和版本之間並不能保證預定的順序。 +1 !!! – RolandoMySQLDBA 2012-01-05 17:26:38
默認排序將取決於查詢中使用的索引以及它們的使用順序。它可以隨着數據/統計信息的變化而改變,優化器可以選擇不同的計劃。
如果你想在一個特定的順序數據,使用ORDER BY
我發現SQL Server處於其默認順序(根據年齡和數據的複雜性),這是好的,幾乎是隨機的它迫使你指定所有的順序。
(我依稀記得甲骨文是在這方面類似於SQL Server)。
的MySQL默認情況下,似乎通過在磁盤上記錄結構,(可以包括由於缺失和亂序輸入命令優化),但它通常最初愚弄開發人員不打擾使用order by子句,因爲數據似乎默認爲主鍵排序,這是而不是的情況!
今天我驚訝地發現,MySQL 5.6和4.1隱式地在有限分辨率的列上按照相反方向對列進行了排序。我的一些結果具有相同的排序值,整體順序不可預測。例如在我的情況下,它是一個按日期時間列排序的DESC,並且一些條目在同一秒內,因此不能明確排序。在MySQL 5.6中,它們按照一個順序(插入的順序)進行選擇,但在4.1中它們選擇向後!這導致了一個非常惱人的部署錯誤。
我have't發現文檔上這種變化,卻發現notes on on implicit group order in MySQL:
默認情況下,MySQL的,如果你指定ORDER BY col1中所有排序GROUP BY COL1,COL2,...查詢,COL2, ...在查詢中也是如此。
但是:
依賴隱式GROUP BY排序在MySQL 5.5已經過時了。要實現分組結果的特定排序順序,最好使用明確的ORDER BY子句。
因此,與其他答案一致 - 不要依賴任何數據庫中的默認或隱式排序。
- 1. 基本SQL排序依據查詢
- 2. LINQ查詢排序依據
- 3. 在MYSQL中查詢的默認順序是什麼?
- 4. Symfony的學說 - 排序依據查詢
- 5. 爲什麼DataTable.Select排序默認
- 6. 排序依據與GROUPBY查詢
- 7. 排序依據兒童在LINQ查詢
- 8. LINQ查詢 - 奇結果 - 排序依據
- 9. 可查詢自定義排序依據
- 10. Linq查詢與排序依據字數
- 11. R:ggplot2中散射形狀的默認排序是什麼
- 12. 什麼是Unix find命令的默認排序?
- 13. SQL:爲什麼varchar(50)是默認值?
- 14. 編譯實體SQL查詢和排序依據
- 15. 什麼是共享點的默認搜索查詢(FreeText或Contains)?
- 16. Hibernate的多對多JoinTable默認排序依據
- 17. 默認排序
- 18. SQL查詢排序
- 19. SQL查詢排序
- 20. 這是什麼SQL查詢?
- 21. 這是什麼SQL查詢?
- 22. WordPress的查詢只是排序依據menu_order
- 23. 什麼是默認的TransformerFactory?
- 24. 什麼是默認的MaxPoolSize?
- 25. mongo slice,默認排序是什麼,可以更改
- 26. 什麼是Parse Table View默認排序方法?
- 27. SQL查詢的數據排序
- 28. angularjs做排序依據後點擊標題,而不是給默認的頭
- 29. 的Sql排序查詢
- 30. 默認情況下,SQL Server表排序
我相信這取決於存儲引擎和潛在的索引。 – smp7d 2012-01-05 17:10:22
有用的答案可以在類似的問題中找到,例如[處理默認排序順序的SQL最佳實踐](http://stackoverflow.com/questions/1793147/sql-best-practice-to-deal-with-default-sort - 順序)和[MySQL行順序爲「SELECT * FROM table_name;」](http://stackoverflow.com/questions/1949641/mysql-row-order-for-select-from-table-name)。 – Wiseguy 2012-01-05 17:26:25