前言:关于查询走不走索引里面有很多的东西,也分为很多种情况。这里只是简单的一个比较,后续会进一步分析。

1、创建表:SQL> create table test1 (id number,c1 varchar2(50),c2 varchar2(50),c3 varchar2(5
0),c4 varchar2(50));

2、模拟插入10000条记录:

SQL> begin
         for i in 1..10000 loop
             insert into test1 values(i,'阿斯顿飞就快了','及卡拉加水电费了健康','就爱看lsd减肥辣椒水代理费','阿斯顿飞卡死就到了费劲啊lsd就分开了');
         end loop;
     end;
     /

3、打开执行计划,并查询:

  SQL> set autotrace on;

  SQL> select * from scott.test1 where id=500;

执行计划
----------------------------------------------------------
Plan hash value: 4122059633

---------------------------------------------------------------------------
| Id  | Operation         | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |       |     2 |   242 |    42   (3)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| TEST1 |     2 |   242 |    42   (3)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("ID"=500)

Note
-----
   - dynamic sampling used for this statement


统计信息
----------------------------------------------------------
        171  recursive calls
          0  db block gets
        283  consistent gets
          0  physical reads
          0  redo size
        708  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          4  sorts (memory)
          0  sorts (disk)
          1  rows processed
4、创建在id上的索引:

SQL> create index i_test1 on test1(id);

5、再次查询,并查看执行计划:

SQL> select * from scott.test1 where id=500;

执行计划
----------------------------------------------------------
Plan hash value: 550433309

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

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

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

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

|   1 |  TABLE ACCESS BY INDEX ROWID| TEST1   |     1 |   121 |     2   (0)| 00:
00:01 |

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

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


Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("ID"=500)

Note
-----
   - dynamic sampling used for this statement


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          4  consistent gets
          0  physical reads
          0  redo size
        712  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

6、可以看到,创建索引后效率有很大提高。

相关文章:

  • 2021-11-09
  • 2022-12-23
  • 2022-01-11
  • 2021-07-13
  • 2022-02-25
  • 2021-11-23
  • 2021-10-05
  • 2022-12-23
猜你喜欢
  • 2021-06-16
  • 2018-10-11
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
  • 2021-11-14
相关资源
相似解决方案