SQL质量差导致逻辑读比较多
来源:优易学  2011-12-17 16:32:37   【优易学:中国教育考试门户网】   资料下载   IT书店

  1、最近日常检查查看awr报告,发现由一个索引的逻辑读很大

  Tablespace                      Subobject  Obj.       Logical

  Owner         Name    Object Name            Name     Type         Reads  %Total

  ---------- ---------- -------------------- ---------- ----- ------------ -------

  BASECONF   TBS_DEFALU PK_USER_TO_CHANNEL              INDEX   10,318,512   16.95

  VIPBILL    TBS_DEFALU BIL_COLLECT_BIT                 TABLE    6,285,648   10.33

  BASECONF   DATA_04    LAYER_CHANNEL_TO_NOD            TABLE    6,042,416    9.93

  BASECONF   DATA_04    PK3_1                           INDEX    3,952,688    6.49

  LOGBILL    TBS_BAND_D IX_DAILYTABLE_ALL    P20080704  INDEX    3,575,488    5.87

  2、表结构如下:

  -- Create table

  create table USER_TO_CHANNEL

  (

  USER_ID    NUMBER(4) not null,

  CHANNEL_ID CHAR(4) not null,

  constraint PK_USER_TO_CHANNEL primary key (USER_ID, CHANNEL_ID)

  )

  organization index;

  这是一个索引组织表,表的所有字段组成一个主键索引,用索引组织表是没有问题的。

  3、查找top sql发现有如下sql操作USER_TO_CHANNEL

  1,404,990          335      4,194.0    2.3     6.48      6.67 garq0xt0u3tkp

  Module: JDBC Thin Client

  select A.CHANNEL_ID, B.CHANNEL_NAME from USER_TO_CHANNEL A,PUB_CHANNEL B where A

  .USER_ID=283 and A.CHANNEL_ID=B.CHANNEL_ID and B.CHANNEL_TYPE='HTTP'

  SQL> select count(*) from USER_TO_CHANNEL;

  COUNT(*)

  ----------

  4259

  SQL> select count(*) from PUB_CHANNEL;

  COUNT(*)

  ----------

  4260

  SQL>

  4、查看sql的执行计划

  SQL> set autotrace traceonly;

  SQL> select A.CHANNEL_ID, B.CHANNEL_NAME

  2    from USER_TO_CHANNEL A, PUB_CHANNEL B

  3   where A.USER_ID = 283

  4     and A.CHANNEL_ID = B.CHANNEL_ID

  5     and B.CHANNEL_TYPE = 'HTTP';

  33 rows selected.

  Execution Plan

  ----------------------------------------------------------

  -------------------------------------------------------------------------

  | Id  | Operation          | Name               | Rows  | Bytes | Cost  |

  -------------------------------------------------------------------------

  |   0 | SELECT STATEMENT   |                    |    34 |  1496 |    25 |

  |   1 |  NESTED LOOPS      |                    |    34 |  1496 |    25 |

  |   2 |   TABLE ACCESS FULL| PUB_CHANNEL        |  4053 |   142K|    24 |

  |   3 |   INDEX UNIQUE SCAN| PK_USER_TO_CHANNEL |     1 |     8 |     0 |

  -------------------------------------------------------------------------

  Note

  -----

  - 'PLAN_TABLE' is old version

  Statistics

  ----------------------------------------------------------

  0  recursive calls

  0  db block gets

  4194  consistent gets

  0  physical reads

  0  redo size

[1] [2] [3] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训