以前有人说过这个问题
count(1)效率更高一些

解决方案 »

  1.   

    如果只是要判断有无记录,建议增加条件:WHERE ROWNUM <= 1;
    如果要统计记录条数,用count(1)比较快些。
      

  2.   

    just try yourself
    turn explain on 
    set time on
    and run those queries against your largest table .
      

  3.   

    select count(ID)
    ID是一个主键
      

  4.   

    count(1)与count(*)也不见得快去多少,count(1)也一样全表检索.
    这个问题值得大家讨论。
    本人一直用法count(1)
      

  5.   

    我一直用select count(*) 、速度感觉还行,不过没有试过很多条纪录是的情况
      

  6.   

    测试最能说明问题我自己测试的是:select count(*)比较快
      

  7.   

    select count(1)比较快,给出“*”作为函数的列集合实际上强迫oracle在返回结果前读取整个表,如果使用“1”则函数会忽略常量只对纪录计数
      

  8.   

    count(1) 快!
    SQL> select count(1) from ic01;  COUNT(1)
    ----------
      18148621Executed in 104.141 secondsSQL> select count(*) from ic01;  COUNT(*)
    ----------
      18148621Executed in 156.828 seconds
      

  9.   

    SQL> select count(*) from rs_st_ryxx;  COUNT(*)
    ----------
          4388Elapsed: 00:00:03.95
    SQL> select count(zybm) from rs_st_ryxx;COUNT(ZYBM)
    -----------
           4388Elapsed: 00:00:04.97
    SQL> select count(*) from rs_error;  COUNT(*)
    ----------
          1046Elapsed: 00:00:00.40
    SQL> select count(dm) from rs_error; COUNT(DM)
    ----------
          1046Elapsed: 00:00:00.30
    SQL> select count(zybm) from rs_zb_zyrsjbxx;COUNT(ZYBM)
    -----------
           4463Elapsed: 00:00:00.30
    SQL> select count(*) from rs_zb_zyrsjbxx;  COUNT(*)
    ----------
          4463Elapsed: 00:00:00.20
    SQL> select count(*) from rs_fb_jsxx;  COUNT(*)
    ----------
         12890Elapsed: 00:00:00.40
    SQL> select count(zybm) from rs_fb_jsxx;COUNT(ZYBM)
    -----------
          12890Elapsed: 00:00:00.50
    测试了很多,结果不一定,对应大的数据量,应该是count(*) 快一些
      

  10.   

    count(*)智能一些count(l)的时候不同的字段性能不同地
      

  11.   

    我觉得最重要的还是如果你的L存在null值的时候和count(*)返回的结果都不一样所以无可比性
      

  12.   

    1代表第一个字段为主键非空,所以 bluemeteor(挂月)说的情况不会出现。
      

  13.   

    count(字段) 运行时要比 count(*) 快很多