select sum(amount) from table  
select count(*) from table
如果结果数值相同,请问那个运行的速度较快呢,速度很明显吗?因为我的数据库表有压缩数据(相同的记录我就在 amount 字段的值累加),我现在用sum 我感觉很慢
我数据库的数据很大有几千万条

解决方案 »

  1.   

    当然是count快, 因为count(*)只访问rowid, 然后累加;
    但sum(amount)要去实际存储的地方找到amount的值, 再累加
      

  2.   

    相比较一个大数据库用count 和一个叫小的数据库用sum
    能知道哪个快吗?
      

  3.   

    可以使用dbms_utility.get_time进行测试,把使用sum和count的语句分别放到下面的procedure中运行可以得到执行时间create or replace procedure testtime
    is
    n_start number;
    n_end number;
    begin
    n_start:=dbms_utility.get_time;select count(sample_id)
    into samplenum
    from space.t_ext_samples
    where parameter_name='Thickness';
    n_end := dbms_utility.get_time;
    use_time := n_end - n_start;
    dbms_output.put_line('This statement cost '||use_time||' miliseconds');
    end;
    /
      

  4.   

    不好意思,上面的sql语句是我自己的,你可以放你的。