Mysql
MySQL 中 SELECT 語句的預設記錄順序是什麼?
假設您有以下表格和數據:
create table t ( k int, v int, index k(k) ) engine=memory; insert into t (k, v) values (10, 1), (10, 2), (10, 3);
select * from t where k = 10
無子句發出時order by
,MySQL預設如何對記錄進行排序?
重新發布我對有關 SQL Server 的類似問題的回答:
在 SQL 世界中,順序不是一組數據的固有屬性。因此,除非您使用 ORDER BY 子句查詢數據,否則您的 RDBMS 無法保證您的數據將按特定順序返回——甚至是一致的順序。
所以,回答你的問題:
- MySQL 根據需要對記錄進行排序,但沒有任何一致性保證。
- 如果您打算依賴此訂單進行任何操作,則必須使用 指定所需的訂單
ORDER BY
。做任何其他事情都是在為不受歡迎的意外做好準備。這是所有 SQL 的屬性,而不僅僅是 MySQL。SQL-92 規範中的相關文本是:
如果未指定 <order by 子句>,則 Q 的行的順序取決於實現。
游標規範中有類似的文本位。