我有下一个查询:
SELECT to_char(xa_time_cnv.utc_to_loc(UTCTIME),'DD-MM-YYYY HH24:MI:SS'),
+
ROUND(VALOR_INST,2),
+
ge_pkt_conv_funcs.f_convert_tlq(TLQ_INST),
+
ROUND(VALOR_PROM,2), +
ge_pkt_conv_funcs.f_convert_tlq(TLQ_PROM),
+
ROUND(VALOR_MAX,2), +
ge_pkt_conv_funcs.f_convert_tlq(TLQ_MAX),
+
to_char(xa_time_cnv.utc_to_loc(UTCTIME_MAX),'DD-MM-YYYY HH24:MI:SS'),
+
ROUND(VALOR_MIN,2),
+
ge_pkt_conv_funcs.f_convert_tlq(TLQ_MIN),
+
to_char(xa_time_cnv.utc_to_loc(UTCTIME_MIN),'DD-MM-YYYY HH24:MI:SS')
FROM a_5min_033
WHERE utctime >= xa_time_cnv.loc_to_utc(TO_DATE('27/06/2014 00:00:00','DD-MM-YYYY HH24:MI:SS'),null)
AND utctime <= xa_time_cnv.loc_to_utc(TO_DATE('28/06/2014 00:00:00','DD-MM-YYYY HH24:MI:SS') + 8/24,null)
AND POINTNUMBER = 330000
ORDER BY utctime;
第一次在返回记录后运行:
经过时间:00:00:30.87
然后,在第二次运行(缓存中的查询):
经过时间:00:00:01.17
我尝试过分组,但没有结果:
GROUP BY utctime, valor_inst, tlq_inst, valor_prom, tlq_prom, valor_max, tlq_max, utctime_max, valor_min, tlq_min, utctime_min
a_5min_033有3百万行,aprox。
我想第一次改进回应。
你能告诉我如何获得更好的表现吗?
在附件中,我发送创建表索引的脚本。
答案 0 :(得分:1)
我首先要在(POINTNUMBER, utctime)
上创建一个索引:
create index idx_a_5min_033_pointnumber_utctime on a_5min_033(POINTNUMBER, utctime);
最初的额外时间可能是将数据加载到内存中。时机表明查询正在进行全表扫描。请注意,这是猜测。要真正理解执行路径,您需要使用explain plan
或类似功能。