我用的语句是:select count(*) from table; 
              select count(id) from table; 
              select count(date) from table;速度都是比较慢的。 
请问有别的什么快速的方法吗?

解决方案 »

  1.   

    试试:
    select count(rowid) from table
      

  2.   

    SQL> conn oracle/oracle@localtest
    已连接。
    SQL> select count(*) from zzw_temp2;  COUNT(*)
    ----------
          1079已用时间:  00: 00: 00.01
    SQL> select count(rowid) from zzw_temp2;COUNT(ROWID)
    ------------
            1079已用时间:  00: 00: 00.06
    SQL> desc zzw_temp2
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ---------------------------- BMS_CUSTOMER_ID                           NOT NULL NUMBER(8)
     BMS_CUSTOMER_NAME                         NOT NULL VARCHAR2(40)
     BMS_CUSTOMER_PASSWORD                     NOT NULL VARCHAR2(40)SQL> select count(bms_customer_id) from zzw_temp2;COUNT(BMS_CUSTOMER_ID)
    ----------------------
                      1079已用时间:  00: 00: 00.01
    SQL> select count(bms_customer_name) from zzw_temp2;COUNT(BMS_CUSTOMER_NAME)
    ------------------------
                        1079已用时间:  00: 00: 00.01
    SQL> select count(bms_customer_password) from zzw_temp2;COUNT(BMS_CUSTOMER_PASSWORD)
    ----------------------------
                            1079已用时间:  00: 00: 00.01
    SQL>
      

  3.   

    ps 其实我认为直接使用count(主键)速度应该是最快的
      

  4.   

    用count(*),Oracle会自动找主键,是最快的。lz可能没建主键
      

  5.   


    我个人也推荐用这个。不过vc555大侠在另一个帖详细谈了他的不同看法你可以关注一下
    http://topic.csdn.net/u/20090617/16/401ea743-48fa-4449-ab85-6e955fea1a01.html?88044
      

  6.   

    如果你这个表设有主键,那就直接select count(主键) from table_name,这样是很快的,
    因为在表的物理结构中,数据库管理系统会自动为主键列建立索引
      

  7.   

    1 select count(1) from 表名,这个应该比主键快。 不要用* ,用常量会更快一些。
    2 如果那个表的数据量很大的话,建议在 建表的时候建成 分区表,这样在 select就快很多。数据量在1000万以上的 
      

  8.   

    楼主好像为此问题开了两个帖子吧?数据量大了,使用count的各种办法性能都不会很好的。在这种情况下要改变思路: 
    另外再建一张表,专门用于记录大表的数据记录数量,每次大表插入数据的时候就将其更新(可以通过在大表上建立触发器的方式或者在应用程序中实现),在需要用到记录数的时候,一个简单的select就可以搞定。 这样的做法就是将负载平均分布在平时,而不是集中在需要记录数的时候。