database - 关于排序的优化器统计信息

标签 database oracle sorting sql-order-by sql-execution-plan

我是 Oracle 11g 的新手,我有一个关于执行计划的问题。我运行了一个查询,即使查询中没有 ORDER BY 子句,执行计划的统计信息仍然显示内存中有 6 个排序。谁能向我解释为什么会这样?下面是查询和统计:

SQL> SELECT ZIP FROM NOZIPSORT WHERE ZIP BETWEEN '10000' AND '29999' AND rownum < 26;

25 rows selected.

Elapsed: 00:00:00.07

Execution Plan
----------------------------------------------------------
Plan hash value: 4176934817

--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |    25 |   150 |     2   (0)| 00:00:01 |
|*  1 |  COUNT STOPKEY     |           |       |       |            |          |
|*  2 |   TABLE ACCESS FULL| NOZIPSORT |    28 |   168 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(ROWNUM<26)
   2 - filter("ZIP"<='29999' AND "ZIP">='10000')


Statistics
----------------------------------------------------------
        311  recursive calls
          0  db block gets
         47  consistent gets
         38  physical reads
        520  redo size
        805  bytes sent via SQL*Net to client
        431  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          6  sorts (memory)
          0  sorts (disk)
         25  rows processed

最佳答案

我会说递归调用会进行一些排序 - 例如在解析查询时,需要查询数据字典来检查表和列定义,其中一些查询会涉及DISTINCT或其他需要排序的操作。

关于database - 关于排序的优化器统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972353/

相关文章:

mysql - 选择第一个字符是数字的地方

mysql - 如何在具有特定别名的表上正确选择 MySql 函数值?

java - JOOQ 问题 : AM/A. M. 或 PM/P.M.必需的

Java 不运行带有参数的准备语句

performance - 交换和转移有什么区别?

r - 如何在 R 中对数据框进行排序

algorithm - MERGE SORT 的 DIVIDE 步骤的基本混淆

database - Zend 2 Framework 中的多对多关系

database - 备份/恢复 dockerized PostgreSQL 数据库

python - sqlalchemy 1.1.10 oracle 连接错误