在oracle 10g 中,表的结构是
time,a1,a2,a3,a4,a5,a6,a7除了time是datatime类型的,其它都是varchar2类型的
 
time是主键表里面有77W多的数据
我现在对a1--a7的数据进行sum聚合 select datatime,sum(a1),sum(a2),sum(a3),sum(a4),sum(a5),sum(a6),sum(a7)
from table group by datatime;速度要几秒钟,请问 怎么优化查询啊

解决方案 »

  1.   

    varchar2的字段,用sum似乎存在逻辑问题。sql已经写的很好了。可以尝试加大pga之类的以增加排序空间
      

  2.   

    varchar2类型也能用sum函数吗?
      

  3.   

    不好意思,说错了,是number类型的
      

  4.   


    加大pga?
    请问下pga 是什么啊,小弟初入oracle,很多还不是很明白,请指教
      

  5.   

    group by 查询语句执行时是要排序的,如果数据量大时再排序慢一些也是正常的。 如果自己有权限,可以尝试着将排序区加大试试看。 
      

  6.   

    select datatime,sum(a1),sum(a2),sum(a3),sum(a4),sum(a5),sum(a6),sum(a7) 
    from table group by datatime; 这里 datatime 是主键,也就是datatime在表中是唯一的,你这里group by有什么意义呢?你的sql等同于
    select *
      from table;
      

  7.   

    不用GROUP BY ,是NUMBER 型就没有关系了,应该也不会很慢吧
      

  8.   

    谢谢大家了,其实是要按月统计数据,所以datatime 是用to_char()处理过的
    我下个星期再来,谢谢大家了