【发布时间】:2010-10-28 07:45:29
【问题描述】:
在 Oracle 中,如果未指定“order by”子句,则选择查询的默认行顺序是什么。
是吗
- 插入行的顺序
- 根本没有默认排序
- 以上都不是。
【问题讨论】:
-
这个问题被问了很多(我已经看到它在几个论坛中弹出)。我认为这可能是由于错误地认为“ORDER BY”将迫使 CBO 执行排序,这显然比执行无序查询更昂贵。有一些方法可以提高 Oracle 中的排序性能,但它们不需要避免“ORDER BY”子句。
-
已经有足够的答案来说明这一点,但只是补充一下 - 没有明确的顺序,运行时引擎将在从存储中获取行时返回行。它如何获取行取决于执行计划。执行计划可能会发生变化,尤其是从 11g 开始,它具有诸如统计反馈等自适应特性。行存储在不保证顺序的块中。
标签: oracle sql-order-by