【发布时间】:2022-02-17 15:55:30
【问题描述】:
我在下面有一个查询,它在执行计划中使用了 PARTITION RANGE ALL。但是该表已分区,并且我在“comar”列上有一个索引。
- 根本原因是什么?
- 如何优化它以获得 PARTITION RANGE ITERATOR?
查询:
select * from CFTDAT_TT D, IHSPOS L where L.COMAR=D.COMAR ;
索引:
CREATE INDEX "OPS$BRU"."IHSPOS3" ON "OPS$BRU"."IHSPOS" ("COMAR") ;
这是执行计划的截图:
【问题讨论】:
-
你想强制 PARTITION RANGE 像问题标题一样吗?从问题详细信息来看,您似乎想让它使用您的索引,这与分区无关。也许我错过了什么。
-
1.除非您为分区列提供一些过滤器,否则不会出现分区范围迭代器。 2.索引不会在所有情况下都使用,它的使用取决于在索引扫描和表扫描的情况下IO优化器期望做多少。您的问题没有关于行数以及应该从大表中检索多少行的表大小的任何信息。这就是为什么我们无法猜测为什么优化决定使用这个执行计划
-
感谢您格式化我的问题:)。关于索引我只想提供最大的信息来帮助我解决这个问题,表 IHSPOS 包含 2389 ROWS 和 CFTDAT_TT 它是临时表,它包含3行
标签: sql oracle optimization indexing partitioning