select count(*) from tab_name不就可以实现了吗,需要那么麻烦吗

解决方案 »

  1.   

    count(*) 这样的操作对于我现在的应用实在太慢了,200W条记录count一次就要用快1分钟,无法忍受的呀,我觉得oracle这样的数据库应该有更简便的方法的呀
      

  2.   

    建一个表,存放表名和条数
    通过job定时调用计算条数的存储过程把结果保存到表中这样取起来肯定快,但是实时性不强
      

  3.   

    可以用 count(*) 来实现,但速度太慢。
    用关联查询的方式也可以,估计速度也不会太理想:
       select  max(num) from (select rownum num from tablename);建议:
      在表上创建一个行级触发器来监测表中记录的变化,并记录下来。
      需要一个表记录这些信息(包括表中记录条数最新统计数字)
      具体实现方法很多,你自己好好考虑一下吧。注意:操作回退的情况
      

  4.   

    "在表上创建一个行级触发器来监测表中记录的变化,并记录下来"
    我现在就是这么干的,但这样严重影响数据库写入速度,
    我的系统要求的写入速度很高的
    select max(rownum) from tablename 我也试过了,速度几乎和count一样还有更好的建议吗?
      

  5.   

    select count(col_name) from tab_name
    已经很快了
      

  6.   

    适当的建立一个位图索引,就可以利用索引来优化select count(*) from table_name语句,以避免全表扫描.我的一个表(oracle91)1500万条记录,没有索引时大于120秒,建了索引只用不到1秒.
      

  7.   

    用count(*)将引起full scan. 
    select count(column_name) from a.
    其中column_name是表a的索引列,这样只会相关索引的读取.
      

  8.   

    适当的建立一个位图索引,就可以利用索引来优化select count(*) from table_name语句,以避免全表扫描.我的一个表(oracle91)1500万条记录,没有索引时大于120秒,建了索引只用不到1秒. 我来试试看
      

  9.   

    不要用count(*),如果该表在某个字段上创建了索引(id),就用count(id),这样的速度会快很多。我曾经对一个6000万的表作计算,总共没有超过15秒
      

  10.   

    tsj68(tsj) :
    我建了索引怎么也不看不出来它快呀,这个适当的位图索引怎么建立?能否赐教?
    我被这个东西给搞的都没有什么脾气了
      

  11.   

    tsj68(tsj) :
    感谢感谢,这个位图索引也太快了吧.