4

如果我执行 a select * from mytable,记录将按什么顺序显示?它会占用第一列还是按某种元数据排序?

我正在使用 Oracle 数据库。

4

2 回答 2

13

没有默认的“排序”顺序。关系表中的行没有排序

获得特定订单的唯一(真的:唯一)方法是使用ORDER BY

无论您在运行SELECTwithout时看到的任何顺序ORDER BY都是纯巧合的,并且可以随着下一次执行而改变。

由于各种原因,订单可能会发生变化:

  • 其他会话正在运行相同的语句
  • 该表已更新
  • 执行计划改变
  • ...

这是一个小 SQLFiddle,向您展示“顺序”如何更改:http ://sqlfiddle.com/#!4/19d14/2

请注意,最初的“订单”甚至与插入订单不同!

于 2013-06-12T06:43:22.247 回答
1

通常,除非指定,否则没有排序顺序。

这可能与存储、索引、索引存储、索引选择、执行计划、数据库引擎实现不同,就像我感觉的那样。

如您所见,您要么指定排序顺序,要么不指望它。

于 2013-06-12T06:42:41.623 回答