【发布时间】:2015-04-10 05:02:06
【问题描述】:
我喜欢做的是仅在每个星期五的繁忙时间提取一个数据集,为期 1 年。 我使用了以下查询:
select to_char(datetimelocal,'DD/MM/YYYY HH24:MI:SS'), colA,colB,colC,colD
from Schema_X.Table_Y
where DATETIMELOCAL between '1-Apr-2014' and '1-Apr-2015'
and to_char(datetimelocal,'D')=6
and to_number(to_char(datetimelocal,'sssss')) between 57600 and 64800
此查询有效,但我从系统管理员那里收到以下警告消息,提示我已用尽系统资源。
“有一个用户 xxx 对 Schema_X 表运行查询,这些表正在扫描整个表而不是进行分区修剪。所以用户应该使用分区字段也减少日期范围,这太大了”
我发现 Table_X 是每日分区的,但不知道如何明智地使用分区来减少系统负载。
分区是这样的:
PARTITION_NAME,HIGH_VALUE,HIGH_VALUE_LENGTH,TABLESPACE_NAME,COMPRESSION,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,LAST_ANALYZED,AVG_SPACE,SUBPARTITION_COUNT
20121230,TO_DATE(' 2012-12-31 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),83,NATIONAL_RPT,DISABLED,,,,,,0
20121231,TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),83,NATIONAL_RPT,DISABLED,,,,,,0
20130101,TO_DATE(' 2013-01-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),83,NATIONAL_RPT,DISABLED,,,,,,0
20130102,TO_DATE(' 2013-01-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),83,NATIONAL_RPT,DISABLED,,,,,,0
20130103,TO_DATE(' 2013-01-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),83,NATIONAL_RPT,DISABLED,,,,,,0
....
【问题讨论】:
标签: sql oracle overloading partition