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

 

  2273  bytes sent via SQL*Net to client

  514  bytes received via SQL*Net from client

  4  SQL*Net roundtrips to/from client

  0  sorts (memory)

  0  sorts (disk)

  33  rows processed

  oracle默认采用NL进行全表扫描

  此时的逻辑读=consistent gets+db block gets=4194

  5、在sql语句中加入hint(1)

  SQL> select /*+use_hash(b,a)*/ 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 |    27 |

  |   1 |  HASH JOIN         |                    |    34 |  1496 |    27 |

  |   2 |   INDEX RANGE SCAN | PK_USER_TO_CHANNEL |    34 |   272 |     2 |

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

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

  Note

  -----

  - 'PLAN_TABLE' is old version

  Statistics

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

  1  recursive calls

  0  db block gets

  112  consistent gets

  0  physical reads

  0  redo size

  2273  bytes sent via SQL*Net to client

  514  bytes received via SQL*Net from client

  4  SQL*Net roundtrips to/from client

  0  sorts (memory)

  0  sorts (disk)

  33  rows processed

  在sql语句中加入hint,此时的逻辑读有明显下降

  此时的逻辑读=consistent gets+db block gets=112

  6、在sql语句中加入hint(2)

  SQL> select /*+ use_nl(b,a) leading(a) */ 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 |    3

  6 |

  |   1 |  NESTED LOOPS                |                    |    34 |  1496 |    3

  6 |

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

责任编辑:小草

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