我正在尝试调整查询,并且希望能够判断分区修剪是否正在发生。在查询的一部分,我得到一个 Pstart 和 Pstop 值 =“KEY”:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
|* 5 | INDEX RANGE SCAN | IX_SOMEINDEX | 1 | | 1 (0)| 00:00:01 | KEY | KEY |
执行计划的另一行显示了 Pstart 和 Pstop 值 = "ROWID":
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
| 10 | TABLE ACCESS BY GLOBAL INDEX ROWID | LOOP | 1 | 18 | 2 (0)| 00:00:01 | ROWID | ROWID |
基本上,我正在寻找 ROWID 和 KEY 在 Pstart 和 Pstop 的上下文中的含义的定义。
从广义上讲,它们意味着需要访问的分区将在运行时确定。在第一个计划中,两者都是
KEY
,计划中的一些较早步骤是为分区键生成一个或多个值。然后使用这些分区键来确定 Oracle 需要扫描索引的分区。在第二个计划中,ROWID
来自全局索引的 from 告诉 Oracle with partition 来探测正在检索的每一行。