对参数 optimizer_index_cost_adj 的一点理解_041009

参数 optimizer_index_cost_adj 设定了通过索引扫描和全表扫描之间的代价消耗关系,其默认值为 100 ,表示 ORACLE 在计算查询成本时,通过索引查找和全表扫描成本相等。该参数值越小,表明通过索引查找的代价越小,反之则越大。

通过以下试验,演示该参数的用法。

  1. 查看参数 optimizer_index_cost_adj 的当前值

SQL> conn / as sysdba

|

|

|

|

---|---|---|---|---

Connected.

|

|

|

|

|

SQL> show parameter optimizer_index_cost_adj

|

|

|

|

|

|

|

|

NAME TYPE VALUE

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

optimizer_index_cost_adj integer 100

--参数当前的默认值为100

|

SQL>

|

|

|

|

|

|

SQL> select isses_modifiable,issys_modifiable

|

2 from v$parameter

|

|

|

|

3 where name='optimizer_index_cost_adj';

|

|

|

|

|

|

|

|

ISSES ISSYS_MOD

|

|

|

|

|

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

|

|

|

|

|

TRUE FALSE

-- 说明该参数可以在 SESSION级别动态改变,

但不能在SYSTEM级别动态改变

|

|

|

|

|

  1. 创建表及索引,并对表进行分析

SQL> conn scott/tiger

|

|

|

---|---|---|---

Connected.

|

|

|

|

SQL> create table test(a number,b char(10));

|

|

|

|

|

|

Table created.

|

|

|

|

|

|

|

|

|

SQL>

|

|

|

|

|

SQL> begin

|

|

|

|

2 for i in 1..10000 loop

|

|

3 insert into test values(i,to_char(i));

4 end loop;

|

|

|

|

5 commit;

|

|

|

|

6 end;

|

|

|

|

7 /

|

|

<TD style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0.75pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0.75pt;

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus