SQL> select * from t_game_detail;已选择245106行。已用时间:  00: 00: 14.01Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=12765 Card=201615 By
          tes=19959885)   1    0   PARTITION RANGE (ALL)
   2    1     TABLE ACCESS (FULL) OF 'T_GAME_DETAIL' (Cost=12765 Card=
          201615 Bytes=19959885)Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
     101144  consistent gets
      84725  physical reads
          0  redo size
   21442615  bytes sent via SQL*Net to client
     180243  bytes received via SQL*Net from client
      16342  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
     245106  rows processedSQL> select * from t_game_detail where part_id = 11;已选择245127行。已用时间:  00: 00: 07.09Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=996 Card=201615 Byte
          s=19959885)   1    0   TABLE ACCESS (FULL) OF 'T_GAME_DETAIL' (Cost=996 Card=2016
          15 Bytes=19959885)Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      23545  consistent gets
       6772  physical reads
          0  redo size
   21444394  bytes sent via SQL*Net to client
     180254  bytes received via SQL*Net from client
      16343  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
     245127  rows processed
上面两个查询结果记录行数是差不多了, 为什么第一个查询花了14秒,而且84725  physical reads 这么大,而第二个查询加了 part_id = 11,才花了7秒,而且6772  physical reads 小多了。
在plsql developer上执行select * from t_game_detail也花好多时间, 用select * from t查询其表很快就执行完了。为什么在查询t_game_detail会慢那么多呢,以前很快的,这两天突然变慢了,也没什么特别的操作? 我用的 oracle 9i,在windows 2003系统上。
哪位大侠帮忙指教一下?

解决方案 »

  1.   

    cost 好大呀..最近对这个表有没有大量的删除操作?如果有肯能是高水位的原因..Oracle 高水位(HWM)
    http://blog.csdn.net/tianlesoftware/archive/2009/10/22/4707900.aspx
      

  2.   

    20W的结果,这个速度的确是慢了,你的机器性能如何,SGA配置如何。做一做统计。上一个的物理读比下面的高,是因为已经读到data buffer里了。
      

  3.   

    我这个表是有做按月份来分区的,只保留当前一个月的数据,以前的数据会delete掉, 现在如果我用
    条件where part_id = 9; 来查询第9分区时也是很慢。 查第11分区或者其他的分区很快。
     就是查第9分区时候花了最多时间,几乎和 查所有分区所用的时间一样,是不是第9分区有问题?
     所以感觉应该不是高水位的问题。
      

  4.   

    虽然我第9分区的数据已经全部 delete了,所以查询第9分区出来的数据为空,但是却很慢。其他像8 7这些分区, 数据也是全delete了,但不会慢。