关于分区表的问题
Corn1 2016-02-16 01:45:41 两张表,部分字段不同,但建的索引、主键相同,而且都是按照日期来分区。
相同的一条SQL语句:
select ObjectNumber,ObjectName,StartTime from T_M_SectorDOHour
where (ObjectNumber in (select oid from mod_negroup_info where group_id=186544))
and (CityID=12101) and (trunc(StartTime)=to_date('2016-02-15','yyyy-mm-dd'))
其执行计划:
SELECT STATEMENT, GOAL=ALL_ROWS
NESTED LOOPS
PARTITION RANGE ALL
TABLE ACCESS FULL T_M_SECTORDOHOUR
INDEX UNIQUE SCAN PK_MOD_NEGROUP_INFO
看上去貌似没问题。
但另一张表,相同的SQL语句,表名换一下,其执行计划变成了:
SELECT STATEMENT, GOAL=ALL_ROWS
NESTED LOOPS
NESTED LOOPS
INDEX FAST FULL SCAN PK_MOD_NEGROUP_INFO
INDEX RANGE SCAN IDX_T_M_SECTOR1XHOUR1_OBJECT
TABLE ACCESS BY GLOBAL INDEX ROWID T_M_SECTOR1XHOUR
貌似进行了全表扫描,没有用到分区。
但第二张表的索引都是VALID的。
索引如下:
IDX_T_M_SECTOR1XHOUR1_OBJECT Normal OBJECTNUMBER
IDX_T_M_SECTOR1XHOUR1_TIME Normal STARTTIME
T_M_SECTOR1XHOUR1_PRIMARY Unique OBJECTNUMBER, STARTTIME, CITYID
如果我直接改成查分区,应该可以。但如果要查多天估计就...
请求各位大侠帮忙