【发布时间】:2014-09-25 12:59:33
【问题描述】:
我有一个表,其两列上的分区列表按 MY_ID(值为 1、2、3、5、8...1100 的整数)、RUN_DATE(过去几天)的顺序排列。
我的查询是
select * from my_partitioned_table
where run_date = '10-sep-2014'
and my_id in (select my_id from mapping_table where category = 1)
;
进行全表扫描,说明计划如下。
PX RECEIVE 115K 4M 600 1,01 PCWP
PX SEND BROADCAST :TQ10000 115K 4M 600 1,00 P->P BROADCAST
PX BLOCK ITERATOR 115K 4M 600 1,00 PCWC
TABLE ACCESS FULL MAPPING_TABLE 115K 4M 600 1,00 PCWP
PX BLOCK ITERATOR 1G 412G 34849 1,01 PCWC 1 16
TABLE ACCESS FULL MY_PARTITIONED_TABLE 1G 412G 34849 1,01 PCWP KEY KEY
如何强制它只访问某些分区而不是进行全表扫描?
抱歉,我对 Oracle 提示不太熟悉,之前找不到具体问题。
【问题讨论】:
-
请给我们看一下表格的结构
标签: sql oracle partitioning pruning