在12C中,在单个列上可以建立多个索引,但是同一时间只有一个索引可用,通过将索引设置成INVISIBLE和VISIBLE实现。
下面的实例,是在同一个字段上建立了1各B Tree索引和1各BITMAP索引,通过trace跟踪索引使用情况
SQL> desc n_obj;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(128)
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(128)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(23)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(128)
SHARING VARCHAR2(13)
EDITIONABLE VARCHAR2(1)
ORACLE_MAINTAINED VARCHAR2(1)
SQL> delete from n_obj;
90809 rows deleted.
SQL> commit;
Commit complete.
SQL> insert into n_obj select * from dba_objects where rownum<1001;
1000 rows created.
SQL> commit;
Commit complete.
SQL> create index n_obj_id_btree on n_obj(OBJECT_ID);
Index created.
SQL> create bitmap index n_obj_id_bitmap on n_obj(OBJECT_ID) INVISIBLE;
Index created.
SQL> set auto trace traceonly
SQL> select OBJECT_ID from c##awen.n_obj where OBJECT_ID>100;
901 rows selected.
Elapsed: 00:00:00.07
Execution Plan
----------------------------------------------------------
Plan hash value: 2281190708
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 90711 | 442K| 3 (0)| 00:00:01 |
|* 1 | INDEX FAST FULL SCAN| N_OBJ_ID_BTREE | 90711 | 442K| 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("OBJECT_ID">100)
Statistics
----------------------------------------------------------
205 recursive calls
0 db block gets
414 consistent gets
4 physical reads
0 redo size
16731 bytes sent via SQL*Net to client
1203 bytes received via SQL*Net from client
62 SQL*Net roundtrips to/from client
30 sorts (memory)
0 sorts (disk)
901 rows processed
SQL> alter index n_obj_id_btree INVISIBLE;
Index altered.
SQL> alter index n_obj_id_bitmap VISIBLE;
Index altered.
SQL> select OBJECT_ID from c##awen.n_obj where OBJECT_ID>100;
901 rows selected.
Elapsed: 00:00:00.07
Execution Plan
----------------------------------------------------------
Plan hash value: 1931127315
------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 90711 | 442K| 4 (0)| 00:00:01 |
| 1 | BITMAP CONVERSION TO ROWIDS | | 90711 | 442K| 4 (0)| 00:00:01 |
|* 2 | BITMAP INDEX FAST FULL SCAN| N_OBJ_ID_BITMAP | | | | |
------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("OBJECT_ID">100)
Statistics
----------------------------------------------------------
57 recursive calls
0 db block gets
116 consistent gets
6 physical reads
0 redo size
16731 bytes sent via SQL*Net to client
1203 bytes received via SQL*Net from client
62 SQL*Net roundtrips to/from client
6 sorts (memory)
0 sorts (disk)
901 rows processed
SQL>
最后修改时间:2022-03-28 10:29:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




