您的位置:首页 > 数据库

[转]通过分析SQL语句的执行计划优化SQL (七)[3]

2008-02-29 10:48 821 查看
0   SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=1 Bytes=110)
  1  0  HASH JOIN (Cost=5 Card=1 Bytes=110)

  2  1   HASH JOIN (Cost=3 Card=1 Bytes=84)

  3  2    TABLE ACCESS (FULL) OF 'C' (Cost=1 Card=1 Bytes=26)

  4  2    TABLE ACCESS (FULL) OF 'A' (Cost=1 Card=82 Bytes=4756)

  5  1   TABLE ACCESS (FULL) OF 'B' (Cost=1 Card=1 Bytes=26)

  select /*+ ORDERED USE_NL (A C)*/ A.col4

  from C , A , B

  where C.col3 = 5 and A.col1 = B.col1 and A.col2 = C.col2

  and B.col3 = 10;

  Execution Plan

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

  0   SELECT STATEMENT Optimizer=CHOOSE (Cost=4 Card=1 Bytes=110)

  1  0  HASH JOIN (Cost=4 Card=1 Bytes=110)

  2  1   NESTED LOOPS (Cost=2 Card=1 Bytes=84)

  3  2    TABLE ACCESS (FULL) OF 'C' (Cost=1 Card=1 Bytes=26)

  4  2    TABLE ACCESS (FULL) OF 'A' (Cost=1 Card=82 Bytes=4756)

  5  1   TABLE ACCESS (FULL) OF 'B' (Cost=1 Card=1 Bytes=26)

  创建索引:

  create index inx_col12A on a(col1,col2);

  select A.col4

  from C , A , B

  where C.col3 = 5 and A.col1 = B.col1 and A.col2 = C.col2

  and B.col3 = 10;

  Execution Plan

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

  0   SELECT STATEMENT Optimizer=CHOOSE

  1  0  MERGE JOIN

  2  1   SORT (JOIN)

  3  2    NESTED LOOPS

  4  3     TABLE ACCESS (FULL) OF 'B'

  5  3     TABLE ACCESS (BY INDEX ROWID) OF 'A'

  6  5      INDEX (RANGE SCAN) OF 'INX_COL12A' (NON-UNIQUE)

  7  1   SORT (JOIN)

  8  7    TABLE ACCESS (FULL) OF 'C'

  select /*+ ORDERED */ A.col4

  from C , A , B

  where C.col3 = 5 and A.col1 = B.col1 and A.col2 = C.col2

  and B.col3 = 10;

  Execution Plan

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

  0   SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=1 Bytes=110)

  1  0  HASH JOIN (Cost=5 Card=1 Bytes=110)

  2  1   HASH JOIN (Cost=3 Card=1 Bytes=84)

  3  2    TABLE ACCESS (FULL) OF 'C' (Cost=1 Card=1 Bytes=26)

  4  2    TABLE ACCESS (FULL) OF 'A' (Cost=1 Card=82 Bytes=4756)

  5  1   TABLE ACCESS (FULL) OF 'B' (Cost=1 Card=1 Bytes=26)

  select /*+ ORDERED USE_NL (A C)*/ A.col4

  from C , A , B

  where C.col3 = 5 and A.col1 = B.col1 and A.col2 = C.col2

  and B.col3 = 10;

  Execution Plan

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

转自 http://it.educity.cn/oracle/200712281702191698.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: