回答
表中的行没有特定的顺序(好吧,它们可能在下面,但它们不需要,DBMS没有义务告诉你它是什么)。
结果的顺序由您提供的ORDER BY
子句指定。如果在查询中不使用ORDER BY
子句,则DBMS可以按照它喜欢的任何顺序自由返回结果。对于一个简单的查询,这将是通常是是它们在磁盘上存在的顺序,尽管只要从单个表中超出SELECT *
,它可能会完全不同。
你可能在SQL Server中有一个“聚簇索引”,它根本不是一个索引,它是按特定顺序将行存储在磁盘上以便更快访问的一条指令。由于它们通常会按顺序从磁盘中检索,所以没有ORDER BY
的(简单)查询通常最终会按照该顺序显示它们。不过这不是你应该依赖的东西。
磁盘上的行顺序在Postgres中特别不太可能有用,因为它使用了一种叫做“MVCC”的方式,在这种情况下更新行实际上会在磁盘上创建一个新记录并将旧记录标记为不活动(这是一种方式在不锁定表的情况下处理交易)。这使得对比度特别明显,但是在任何DBMS中的规则都是相同的:如果要获得特定的结果顺序,请使用ORDER BY
。
很好,我可以使用order by。我只是想知道为什么它有不同的表现。谢谢 –
@King_Fisher希望,现在你知道了:) – IMSoP
我同意你提到的第四点。这是它显示最后修改的记录,当没有订单时选择 –
- 建立索引时,通常使用默认选项创建索引,索引按升序创建。这通常是
创建索引的最合理的方式,所以最新的数据或者最小的值在顶部,而最早的或者最大的值在
的末端。虽然通过这种方式创建索引来搜索索引效果很好,但您是否曾想过要始终返回最近的数据? 有关详细信息,请访问网页:
索引基本上是用来内部数据库进程访问数据 的快捷方式。这不会显示为根据 索引的数据。
用于以升序降序显示记录需要 手动写入。
- 1. 顺序按升序排列
- 2. 按升序排列NSDictionary
- 3. 按升序排列(ASC)
- 4. 按升序排列数组
- 5. SplPriorityQueue按升序排列
- 6. 在python列表中按升序排列
- 7. 如何按升序排列MySQL列?
- 8. 按列升序排列php数组
- 9. 按升序排列列表<>
- 10. 按升序排列选择的列
- 11. Ravendb:按日期降序排列索引
- 12. jqGrid排序索引按列名称
- 13. 按索引排列向量
- 14. 查找升序排列矩阵的列和行索引
- 15. 排序后检索索引值Enum按字母顺序排列
- 16. 按升序对数据列表排序
- 17. c#按升序排序组合列表
- 18. 按升序/降序排列vba excel
- 19. 按顺序排列结果(升序)
- 20. C++按升序排序链接列表
- 21. C#列表顺序由排按升序
- 22. id以降序排列S.N,按升序排列
- 23. 排序列上的索引
- 24. 在索引列上排序
- 25. 排序“索引”阵列
- 26. C - Qsort:按升序排序并按年降序排列
- 27. 按集群式列存储索引中的索引排序
- 28. 升序列表排列
- 29. 以升序排列多列
- 30. 如何双向排序python列表,按降序排列数字,按升序排列字母排序?
当你写的选择查询,你总是需要使用'ORDER BY'为保证订货行 –
,但在SQLSERVER,为了通过是没有必要的,当我们有主键和索引 –
@King_Fisher它始终是必要的,包括如果您想要*保证*订单,请订购。只是在真正简单的查询中,DBMS最容易给出的顺序是磁盘上的行顺序,这对于集群主键来说很方便。这不是SQL Server曾向你承诺过的,它只是你习惯的一种懒惰的快捷方式。 – IMSoP