数据库表定义如下:
ELU_Traffic_Day(moname varchar(20), period datetime, st1 number(8),st2 number(8),...st51 number(8)).
运行如下查询:
select moname, sum(st1), sum(st2),...,sum(st15)
from elu_traffic_day
group by moname
运行时间大概在7秒左右。但如果增加一个字段,
select moname, sum(st1), sum(st2),...,sum(st15),sum(st16)
from elu_traffic_day
group by moname
运行时间则骤然上升为20秒左右。百思不得其解,为什么查询增加一个字段效率会下降这么多?st1到st51的字段定义完全一样啊。
还请高手指点迷经,在此谢先。
ELU_Traffic_Day(moname varchar(20), period datetime, st1 number(8),st2 number(8),...st51 number(8)).
运行如下查询:
select moname, sum(st1), sum(st2),...,sum(st15)
from elu_traffic_day
group by moname
运行时间大概在7秒左右。但如果增加一个字段,
select moname, sum(st1), sum(st2),...,sum(st15),sum(st16)
from elu_traffic_day
group by moname
运行时间则骤然上升为20秒左右。百思不得其解,为什么查询增加一个字段效率会下降这么多?st1到st51的字段定义完全一样啊。
还请高手指点迷经,在此谢先。
解决方案 »
- oracle如何按照范围分列!求高手帮忙...
- insert into select
- sql查询如何显示固定的行
- 两表联合查询加时间的SQL怎么写?
- 这样的数据怎么查?小弟在线求解决!
- 日志文件自动丢失ERROR: ORA-01033: ORACLE initialization or shutdown in progress。
- 也问‘ORA-12638:凭证检索失败’的问题
- 有没有范围-范围分区,能给出示例代码吗
- 请帮我看看这个blob问题[jsp处理blob]
- 主关键字如何由系统自动生成流水号?(大虾帮忙,更看在分数得面子上)
- 那位大哥能不能帮帮我啊!
- 哪里能下载到ORACLE9.2.0.4 for linux的patch文件?
还有从V$SQL视图中找下所执行的sql的具体情况
但是你的数据库需要20秒,多少数据啊。
还有,就是数据库配置的问题了,你sql语句不复杂。
用explain plan分析一下,看看cost。
表里数据量不大,只有24万多条记录。moname不是索引。
这或是关系到每个记录占用的数据块问题,加上一个sum(st16)后,执行sql语句的时候oracle需要多读一个块了,更慢了,而再添加的时也没有读更多的块,所以还是差不多速度。