ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ALL_ROWS&IFFS&IRS

ALL_ROWS&IFFS&IRS

原创 Linux操作系统 作者:yyp2009 时间:2012-05-11 16:10:54 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE一,ALL_ROWS下的INDEX RANGE SCAN

         a.创建普通用户:

   SQL> create user tj identified by tj

             2      default tablespace users

  3      temporary tablespace temp

  4      quota unlimited on users;

 

用户已创建。

 

已用时间:  00: 00: 00.06

SQL> grant create session,create table ,alter session to tj;

 

授权成功。

 

已用时间:  00: 00: 00.03

SQL>

SQL> conn tj/tj

已连接。

SQL> set timing on

SQL> set linesize 300

SQL> set pagesize 200

SQL> create table emp(id number,name varchar2(10));

 

表已创建。

 

已用时间:  00: 00: 00.00

SQL> insert into emp values(100,'tom');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

SQL>  insert into emp values(200,'mike');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

SQL>  insert into emp values(300,'jack');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

SQL> insert into emp values(400,'rose');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

已用时间:  00: 00: 00.00

SQL> commit;

 

提交完成。

 

已用时间:  00: 00: 00.00

SQL>  alter session set optimizer_mode=first_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL> analyze table emp compute statistics;

 

表已分析。

 

已用时间:  00: 00: 00.00

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

SQL>  select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |     6 |     3   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |     6 |     3   (0)| 00:00:01 |

SQL> alter session set optimizer_mode=all_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL> select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |     6 |     3   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |     6 |     3   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("NAME"='tom')

 

SQL> create index emp_idx on emp(name);

 

索引已创建。

 

已用时间:  00: 00: 00.00

SQL> analyze index emp_idx compute statistics;

 

索引已分析

 

已用时间:  00: 00: 00.01

SQL> analyze table emp compute statistics;

 

表已分析。

 

已用时间:  00: 00: 00.00

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL> select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 1472992808

 

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

| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT            |         |     1 |     6 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |     6 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | EMP_IDX |     1 |       |     1   (0)| 00:00:01 |

SQL>

SQL> alter session set optimizer_mode=all_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL>

SQL> select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 1472992808

 

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

| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT            |         |     1 |     6 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |     6 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | EMP_IDX |     1 |       |     1   (0)| 00:00:01 |

SQL> set autotrace off

SQL>    insert into emp select * from emp;

 

已创建4行。

 

已用时间:  00: 00: 00.00

SQL>

SQL> /

 

已创建8行。

 

已用时间:  00: 00: 00.00

SQL> /

 

已创建16行。

 

已用时间:  00: 00: 00.00

SQL> /

 

已创建32行。

 

已用时间:  00: 00: 00.00

SQL> /

 

已创建64行。

 

已用时间:  00: 00: 00.01

SQL> /

 

已创建128行。

 

已用时间:  00: 00: 00.00

SQL> /

 

已创建256行。

 

已用时间:  00: 00: 00.00

SQL> /

 

已创建512行。

 

已用时间:  00: 00: 00.01

SQL> /

 

已创建1024行。

 

已用时间:  00: 00: 00.01

SQL> /

 

已创建2048行。

 

已用时间:  00: 00: 00.01

SQL> /

        insert into emp select * from emp

*

1 行出现错误:

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDO2' )

 

 

已用时间:  00: 00: 00.04

SQL> /

        insert into emp select * from emp

*

1 行出现错误:

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDO2' )

 

 

已用时间:  00: 00: 00.01

SQL> commit;

 

提交完成。

 

已用时间:  00: 00: 00.01

SQL> /

 

提交完成。

 

已用时间:  00: 00: 00.01

SQL>    insert into emp select * from emp;

 

已创建4096行。

 

已用时间:  00: 00: 00.29

SQL> /

        insert into emp select * from emp

*

1 行出现错误:

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDO2' )

 

 

已用时间:  00: 00: 00.10

SQL> commit;

 

提交完成。

 

已用时间:  00: 00: 00.00

SQL>    insert into emp select * from emp;

        insert into emp select * from emp

*

1 行出现错误:

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDO2' )

 

 

已用时间:  00: 00: 00.14

SQL> analyze table emp compute statistics;

 

表已分析。

 

已用时间:  00: 00: 00.01

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL>

SQL> set autot traceonly

SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色

SP2-0611: 启用 STATISTICS 报告时出错

SQL> select * from emp where name='tom';

已用时间:  00: 00: 00.01

 

执行计划

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

Plan hash value: 1472992808

 

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

| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)|

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

|   0 | SELECT STATEMENT            |         |  2048 | 12288 |    28   (0)|

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |  2048 | 12288 |    28   (0)|

|*  2 |   INDEX RANGE SCAN          | EMP_IDX |  2048 |       |    13   (0)|

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

 

Predicate Information (identified by operation id):

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

 

   2 - access("NAME"='tom')

 

SQL>

SQL> alter session set optimizer_mode=all_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL>

SQL>  select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  2048 | 12288 |     8   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |  2048 | 12288 |     8   (0)| 00:00:01 |

SQL> alter   database  orcl datafile   'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF'   resize   400M;

 

数据库已更改。

 

B sys用户下:

SQL>

SQL> select * from v$version;

 

BANNER

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE    10.2.0.1.0      Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

 

SQL> show parameter optimizer_mode

 

NAME                                 TYPE        VALUE

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

optimizer_mode                       string      ALL_ROWS

SQL>

SQL> show user;

USER "SYS"

 

增大数据量后:

SQL>   select * from emp where name='tom';

 

已选择1024行。

 

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  1024 |  6144 |     5   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |  1024 |  6144 |     5   (0)| 00:00:01 |

SQL>  show parameter optimizer_mode

 

NAME                                 TYPE        VALUE

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

optimizer_mode                       string      ALL_ROWS

SQL> select count(*) from emp;

 

  COUNT(*)

----------

      4096

 

SQL> show user;

USER "SYS"

SQL> drop table emp;

 

表已删除。

 

已用时间:  00: 00: 01.14

SQL> create table emp(id number,name varchar2(10));

 

表已创建。

 

已用时间:  00: 00: 00.00

SQL> insert into emp values(100,'tom');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

SQL> insert into emp values(200,'mike');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

SQL> insert into emp values(300,'jack');

 

已创建 1 行。

 

已用时间:  00: 00: 00.01

SQL>  insert into emp values(400,'rose');

 

已创建 1 行。

 

已用时间:  00: 00: 00.00

SQL> commit;

 

提交完成。

 

已用时间:  00: 00: 00.00

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL> analyze table emp compute statistics;

 

表已分析。

 

已用时间:  00: 00: 00.01

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL>  set autotrace trace exp

SQL>  select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |     6 |     2   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |     6 |     2   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("NAME"='tom')

 

SQL>

SQL> alter session set optimizer_mode=all_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.01

SQL>  select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |     6 |     2   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |     6 |     2   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("NAME"='tom')

 

SQL>  create index emp_idx on emp(name);

 

索引已创建。

 

已用时间:  00: 00: 00.01

SQL> analyze index emp_idx compute statistics;

 

索引已分析

 

已用时间:  00: 00: 00.00

SQL> analyze table emp compute statistics;

 

表已分析。

 

已用时间:  00: 00: 00.00

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.01

SQL>  select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 1472992808

 

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

| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Ti

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

|   0 | SELECT STATEMENT            |         |     1 |     6 |     2   (0)| 00

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |     6 |     2   (0)| 00

|*  2 |   INDEX RANGE SCAN          | EMP_IDX |     1 |       |     1   (0)| 00

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

 

Predicate Information (identified by operation id):

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

 

   2 - access("NAME"='tom')

 

SQL>

SQL> alter session set optimizer_mode=all_rows;

 

会话已更改。

 

已用时间:  00: 00: 00.00

SQL>

SQL> select * from emp where name='tom';

已用时间:  00: 00: 00.00

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |     6 |     2   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |     6 |     2   (0)| 00:00:01 |

SQL> show user;

USER "SYS"

SQL> set autot off

SQL> select count(*) from emp;

 

  COUNT(*)

----------

         4

C HINT:

 

  表较大:

 

SQL> show user;

USER "TJ"

SQL>  alter session set optimizer_mode=all_rows;

 

会话已更改。

 

SQL> select/*first_rows*/  name  from emp;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  8192 | 32768 |     8   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |  8192 | 32768 |     8   (0)| 00:00:01 |

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

 

SQL> select /*first_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  2048 |  8192 |     8   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |  2048 |  8192 |     8   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("NAME"='tom')

 

SQL> select /*all_rows*/ name   from emp ;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  8192 | 32768 |     8   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |  8192 | 32768 |     8   (0)| 00:00:01 |

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

 

SQL> select /*all_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  2048 |  8192 |     8   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |  2048 |  8192 |     8   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("NAME"='tom')

 

SQL>

SQL>

SQL>  alter session set optimizer_mode=first_rows;

 

会话已更改。

 

SQL> select/*first_rows*/  name  from emp;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  8192 | 32768 |     8   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |  8192 | 32768 |     8   (0)| 00:00:01 |

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

 

SQL> select /*first_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3087982339

 

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

| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT |         |  2048 |  8192 |    13   (0)| 00:00:01 |

|*  1 |  INDEX RANGE SCAN| EMP_IDX |  2048 |  8192 |    13   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("NAME"='tom')

 

SQL> select /*all_rows*/ name   from emp ;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |  8192 | 32768 |     8   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |  8192 | 32768 |     8   (0)| 00:00:01 |

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

 

SQL> select /*all_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3087982339

 

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

| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT |         |  2048 |  8192 |    13   (0)| 00:00:01 |

|*  1 |  INDEX RANGE SCAN| EMP_IDX |  2048 |  8192 |    13   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("NAME"='tom')

 

SQL>

SQL> set autot off

SQL> select count(*) from emp;

 

  COUNT(*)

----------

      8192

 

   表很小:

 

SQL> alter session set optimizer_mode=all_rows;

 

会话已更改。

 

SQL>

SQL>  select * from emp where name='tom';

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |     6 |     2   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |     6 |     2   (0)| 00:00:01 |

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

 

Predicate Information (identified by operation id):

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

 

   1 - filter("NAME"='tom')

 

SQL> select/*first_rows*/  name  from emp;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     4 |    16 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |     4 |    16 |     2   (0)| 00:00:01 |

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

 

SQL> select /*first_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3087982339

 

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

| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time

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

|   0 | SELECT STATEMENT |         |     1 |     4 |     1   (0)| 00:00:01

|*  1 |  INDEX RANGE SCAN| EMP_IDX |     1 |     4 |     1   (0)| 00:00:01

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("NAME"='tom')

 

SQL> select /*all_rows*/ name   from emp ;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     4 |    16 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |     4 |    16 |     2   (0)| 00:00:01 |

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

 

SQL> select /*all_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3087982339

 

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

| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time

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

|   0 | SELECT STATEMENT |         |     1 |     4 |     1   (0)| 00:00:01

|*  1 |  INDEX RANGE SCAN| EMP_IDX |     1 |     4 |     1   (0)| 00:00:01

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("NAME"='tom')

 

SQL>

SQL>

SQL> alter session set optimizer_mode=first_rows;

 

会话已更改。

 

SQL> select/*first_rows*/  name  from emp;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     4 |    16 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |     4 |    16 |     2   (0)| 00:00:01 |

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

 

SQL> select /*first_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3087982339

 

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

| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time

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

|   0 | SELECT STATEMENT |         |     1 |     4 |     1   (0)| 00:00:01

|*  1 |  INDEX RANGE SCAN| EMP_IDX |     1 |     4 |     1   (0)| 00:00:01

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("NAME"='tom')

 

SQL> select /*all_rows*/ name   from emp ;

 

执行计划

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

Plan hash value: 3956160932

 

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     4 |    16 |     2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS FULL| EMP  |     4 |    16 |     2   (0)| 00:00:01 |

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

 

SQL> select /*all_rows*/ name   from emp where name='tom';

 

执行计划

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

Plan hash value: 3087982339

 

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

| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time

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

|   0 | SELECT STATEMENT |         |     1 |     4 |     1   (0)| 00:00:01

|*  1 |  INDEX RANGE SCAN| EMP_IDX |     1 |     4 |     1   (0)| 00:00:01

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

 

Predicate Information (identified by operation id):

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

 

   1 - access("NAME"='tom')

 

SQL>

SQL>

SQL> set autot off

SQL> show parameter  optimizer_mode;

 

NAME                                 TYPE        VALUE

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

optimizer_mode                       string      FIRST_ROWS

SQL> select count(*) from emp;

 

  COUNT(*)

----------

         4

 

 

二,ALL_ROWS下的INDEX FAST FULL SCAN

http://space.itpub.net/519536/viewspace-619516

从此链接摘录重要片段如下(from Secooler 快乐的DBA

copy Bookmark http://space.itpub.net/519536

):
通过一个实验看一下两种优化模式下的执行计划的不同之处。
1.默认情况下,数据库采用ALL_ROWS模式。
sec@ora10g> show parameter optimizer_mode

NAME                TYPE                 VALUE
------------------- -------------------- -----------------
optimizer_mode      string               ALL_ROWS

2.创建千万级别的测试t,开启autotrace,查看一下默认ALL_ROWS模式下的执行计划。
sec@ora10g> set autot trace explain
sec@ora10g> select t1.x, t2.x from t t1, t t2 where t1.x = t2.x and t1.owner='SEC';

Execution Plan
----------------------------------------------------------
Plan hash value: 2371815244

--------------------------------------------------------------------------------------
| Id  | Operation             | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |      | 99695 |  2823K|       | 43627   (1)| 00:08:44 |
|*  1 |  HASH JOIN            |      | 99695 |  2823K|  3408K| 43627   (1)| 00:08:44 |
|*  2 |   TABLE ACCESS FULL   | T    | 99695 |  2239K|       | 29985   (1)| 00:06:00 |
|   3 |   INDEX FAST FULL SCAN| PK_T |  9969K|    57M|       |  4871   (2)| 00:00:59 |
---------------------------------------------------------------------------------

Conclusion

1   普通用户下和sys用户下ALL_ROWS下的行为有区别

2   ALL_ROWS下不全是fts,有可能是ffsirs

3   HINT ??

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE-----------end--------------

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13750068/viewspace-723363/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 510
请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    330
  • 访问量
    1027171