当没有使用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. “select *”的默认SQL结果排序顺序是什么?
- 2. 什么是solr中的默认查询
- 3. 基本SQL排序依据查询
- 4. LINQ查询排序依据
- 5. 什么是gamecenter排行榜的默认排序顺序。
- 6. SQL查询默认
- 7. 在MYSQL中查询的默认顺序是什么?
- 8. ContentProvider/ContentResolver查询按ID排序默认
- 9. 检索默认或排序值的SQL查询
- 10. Symfony的学说 - 排序依据查询
- 11. 什么是Sitecore中Lucene Search的默认排序顺序?
- 12. 为什么DataTable.Select排序默认
- 13. SSRS重新排序从SQL查询中精心排序的数据!为什么?
- 14. 排序依据与GROUPBY查询
- 15. 可查询自定义排序依据
- 16. Linq查询与排序依据字数
- 17. MySQL查询排序依据GROUPBY,
- 18. LINQ查询 - 奇结果 - 排序依据
- 19. 排序依据儿童在LINQ查询
- 20. SQL:为什么varchar(50)是默认值?
- 21. 什么是Unix find命令的默认排序?
- 22. R:ggplot2中散射形状的默认排序是什么
- 23. 什么是共享点的默认搜索查询(FreeText或Contains)?
- 24. 编译实体SQL查询和排序依据
- 25. 这是什么SQL查询?
- 26. 是什么(+),在SQL查询
- 27. 这是什么SQL查询?
- 28. Hibernate的多对多JoinTable默认排序依据
- 29. 默认排序
- 30. SQL查询排序
我相信这取决于存储引擎和潜在的索引。 – 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