【发布时间】:2015-04-11 08:01:24
【问题描述】:
我有以下表格:
1) date_table_dim
2)clock_table_dim
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 信息。 (这个查询是我的 fact_table 查询的一种总结。)
【问题讨论】:
-
你的索引是什么?解释计划是什么?
-
onlinegpspoint 上有一个发生时间的索引。通过这个查询,我想在 1 小时内获得一些 Olap 信息。 (这个查询是我的 fact_table 查询的一种总结。)
-
向问题添加信息时,请使用编辑按钮在问题正文中包含附加信息 - 不要使用 cmets,因为人们可能不会阅读它们。现在,请编辑问题并在这些表中包含有关字段数据类型的信息。谢谢。
标签: oracle performance olap sql-tuning