oracle 10g中有关于 count(something)的优化吗?语句类似于 select count( something) where ....
取出来的数据要页面显示,但是每次 count对于页面的速度影响太大了,
如果要将 count(*) 的数据,存到一个新表里,那样又要对页面改动很大,我想问一问, oracle中有没有类似于sql server那样的统计优化?

解决方案 »

  1.   

    如果你的WHERE条件固定,可以考虑用物化视图
    另外就是看索引是否有
      

  2.   

    请参考:
    http://blog.csdn.net/phphot/archive/2009/05/24/4211927.aspx
      

  3.   


    主要看你的where条件以及索引的建立情况。楼主不妨把执行计划贴出来看看。
      

  4.   

    Oracle里有执行计划查看sql执行统计,可以直接在sqlplus里通过set autotrace on启用,也可以通过一些客户端工具,plsql dev或者toad来查看sql的执行计划关于count()的优化问题,网上有不少各自的观点,你可以g一下看看,我们以前的系统,为了消除count对应用的影响,基本上是在分页信息里拿去了总页数和总结果数的信息。
      

  5.   

    我并不打算用索引 where 列,我在想oracle是不是支持自动统计 ,
    使 指定 的 select count(something) where something的结果,直接存储于某个字段
    这样的话,优化就成了取一条数据了
      

  6.   

    你可以用JOB或者物化视图
    另外你经常查询的话,不管哪种方式,索引还是需要的
     上面的链接你直接复制文字再打开
      

  7.   


    请参考:http://blog.csdn.net/phphot/archive/2009/05/24/4211927.aspx
      

  8.   


    Oracle的数据字典user_tables是有对rows的统计,不过这个值是和实际值有差异的,除非你做过统计。SQL> select num_rows from user_tables where table_name = '你的表名'如果是10g或者以上AWR会给你做自动统计,不过是有一定时间间隔的。默认的不是实时统计信息的,