jokerchu 发表于 2018-9-24 13:59:22

Oracle索引分析与比较 index-Aaron的笔记

  (5)CBO模式下表很久没分析,表的增长明显,优化器采取了全表扫描。
  SQL> select * from test.testindex where a like '1%';
  A             B
  ---- ----------
  1             2
  1             1
  10         10
  11         11
  12         12
  13         13
  14         14
  15         15
  16         16
  17         17
  18         18
  19         19
  100         100
  已选择13行。
  Execution Plan
  ----------------------------------------------------------
  0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=13 Bytes=52)
  1   0TABLE ACCESS (FULL) OF 'TESTINDEX' (Cost=1 Card=13 Bytes=52)
  (表一共102行,选择比例为13/102>10%,优化器选择了全表扫描)
  ――――――――――――――――――――――――――――――――――
  增加表行数
  SQL> declare i number;
  2begin
  3for i in 200 .. 1000 loop
  4insert into test.testindex values (to_char(i),i);
  5end loop;
  6end;
  7/
  PL/SQL 过程已成功完成。
  SQL> commit;
  提交完成。
  SQL> select count(*) from test.testindex;
  COUNT(*)
  ----------
  903
  SQL> select * from test.testindex where a like '1%';
  A             B
  --------------
  1             2
  1             1
  10         10
  11         11
  12         12
  13         13
  14         14
  15         15
  16         16
  17         17
  18         18
  19         19
  100          100
  1000         1000
  已选择14行。
  Execution Plan
  ----------------------------------------------------------
  0      SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=13 Bytes=52)
  10TABLE ACCESS (FULL) OF 'TESTINDEX' (Cost=1 Card=13 Bytes=52)
  (表一共903行,选择比例为14/903
页: [1]
查看完整版本: Oracle索引分析与比较 index-Aaron的笔记