使用' select *&#39 ;?的默认SQL结果排序顺序是什么?

时间:2013-06-12 06:41:13

标签: sql oracle

如果我执行select * from mytable,记录会以哪种顺序显示?它会采用第一列还是通过某种元数据对其进行排序?

我正在使用Oracle数据库。

2 个答案:

答案 0 :(得分:11)

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

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

在没有SELECT的情况下运行ORDER BY时,您看到的顺序是纯粹重合,并且可以在下次执行时更改。

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

  • 其他会话正在运行相同的声明
  • 表格已更新
  • 执行计划更改
  • ...

这是一个小SQLFiddle,它向您展示“订单”如何变化:http://sqlfiddle.com/#!4/19d14/2

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

答案 1 :(得分:1)

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

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

正如您所看到的,您要么指定排序顺序,要么不依赖它。