Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
oracle olap查询执行时间过长_Oracle_Performance_Olap_Sql Tuning - Fatal编程技术网

oracle olap查询执行时间过长

oracle olap查询执行时间过长,oracle,performance,olap,sql-tuning,Oracle,Performance,Olap,Sql Tuning,我有以下表格: 1日期表尺寸 2时钟表尺寸 3 onlinegpspoint:包含olap报告的主要信息 还有这样一个sql查询: SELECT date_table_dim.day_id day_id, clock_table_dim.hour_id hour_id FROM onlinegpspoint olgps INNER JOIN date_table_dim ON ( olgps.occurance_time >= to_date('2014-03-01 00:

我有以下表格:

1日期表尺寸

2时钟表尺寸

3 onlinegpspoint:包含olap报告的主要信息

还有这样一个sql查询:

SELECT 
  date_table_dim.day_id day_id,
  clock_table_dim.hour_id hour_id

FROM  onlinegpspoint olgps
INNER JOIN date_table_dim
ON ( 
olgps.occurance_time >= to_date('2014-03-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
AND olgps.occurance_time  >= date_table_dim.day_id
AND olgps.occurance_time   < date_table_dim.day_id + 1
)
INNER JOIN  clock_table_dim
ON ( clock_table_dim.hour_id <= TO_NUMBER(TO_CHAR(occurance_time, 'HH24'))
AND clock_table_dim.hour_id   > TO_NUMBER(TO_CHAR((occurance_time - 1/24), 'HH24') ))

GROUP BY 
  date_table_dim.day_id,
  clock_table_dim.hour_id ;
我的问题是,执行此查询的时间太长。 可以采取哪些措施来提高此查询执行的性能

编辑
在onlinegpspoint上有一个发生时间索引。通过这个查询,我想获得一些1小时内的Olap信息。此查询是我的事实表查询的一种摘要。

您可以尝试以下查询


你的索引是什么?解释计划是什么?在onlinegpspoint上有一个发生时间索引。通过这个查询,我想获得一些1小时内的Olap信息。此查询是“我的事实”表查询的一种摘要。向问题添加信息时,请使用“编辑”按钮在问题正文中包含其他信息-不要使用注释,因为人们可能不会阅读它们。现在,请编辑该问题,并包括有关这些表中字段的数据类型的信息。谢谢
with t as (select d.day_id, o.occurance_time ot
  from onlinegpspoint o
  join date_table_dim d on ( o.occurance_time >= date '2014-03-01'
    and d.day_id <= o.occurance_time and o.occurance_time < d.day_id + 1) ) 
select day_id, c.hour_id
  from t join clock_table_dim c on ( 
    c.hour_id <= to_char(t.ot, 'HH24') and to_char((t.ot - 1/24), 'HH24') < c.hour_id )
  group by day_id, c.hour_id order by day_id, c.hour_id;
select distinct trunc(occurance_time) day_id, to_char(occurance_time, 'hh24')+0 hour_id 
  from onlinegpspoint o join (
    select to_date(to_char(day_id, 'yyyy-mm-dd ')||' '
        ||lpad(hour_id, 2, 0), 'yyyy-mm-dd hh24') dt 
      from date_table_dim, clock_table_dim) d 
    on (o.occurance_time >= date '2014-03-01' 
      and d.dt-1/24 <= o.occurance_time and o.occurance_time < d.dt)