Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 条件为in的oracle强制分区修剪_Sql_Oracle_Partitioning_Pruning - Fatal编程技术网

Sql 条件为in的oracle强制分区修剪

Sql 条件为in的oracle强制分区修剪,sql,oracle,partitioning,pruning,Sql,Oracle,Partitioning,Pruning,我有一个表,两列上有列表分区,顺序是我的\u ID(值为1,2,3,5,8…1100的整数)、RUN\u 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

我有一个表,两列上有列表分区,顺序是我的\u ID(值为1,2,3,5,8…1100的整数)、RUN\u 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提示不太熟悉,以前找不到具体的问题。

该查询计划表示它正在查找
我的分区表的一个(或多个)分区。所以分区修剪已经开始了


在发布解释计划时,您已经删除了列标题(获得固定宽度版本也会很有帮助)。但最后两列几乎肯定是开始和结束分区。当您看到开始分区或结束分区的
KEY
时,这意味着Oracle正在确定运行时实际需要扫描的分区集。在这种情况下,它需要确定子查询将返回的
my_id
值集,然后才能确定需要访问表中的哪些分区。
TABLE ACCESS FULL
位仅表示它将对需要访问的分区进行完全扫描。

显示表的结构,请您确切地知道在执行查询后实际扫描了哪些分区吗?谢谢你的快速回答。@androboy-我不知道有什么方法可以把这些信息从我的脑海中抹去,尽管如果你跟踪一次执行,你几乎可以肯定地从跟踪文件中推断出来。根据您的环境,您还可以通过观察会话正在执行的读取次数以及对各个段执行的读取次数来进行一些推断。