OCP复习 - 管理(12) - 管理索引

索引的BLOCK管理方式类似于表。当删除一行时,索引中的引用被删除,但空间不会被重新使用(注意可能引起性能问题);更新一个表中的键值会引起索引中删除并增加一个键值,即使被增加的BLOCK中的数据已经超过PCTFREE。

反向键值索引:

将键值反过来存储,当数据更新时,可以分散数据更新的集中度,有利于IO效率。不过应该注意:
1、如果只有一次磁盘,反向索引是否能提高效率值得商榷。
2、WHERE条件中模糊匹配的UPDATE语句可能会比原来更慢。
3、反向键值索引主要适用于并行服务器。
4、范围条件查找无法利用反向键值索引。

基于函数的索引

位图索引:

适用于键值的取值范围是有限的一些枚举值(有利于建立位图);查询的WHERE条件经常使用OR操作符(可以利用OR操作符);更新不频繁(锁表代价比B树大)。总的来说,位图索引更使用于OLAP应用。

创建B树索引:
CREATE [ UNIQUE ]INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ] --数据已经是排序的了,无需再排序
[ REVERSE ] --反向键值索引,不能和NOSORT同时使用

创建位图索引,注意不能是UNIQUE的:
CREATE BITMAP INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ]

修改索引储存空间的一些SQL语句:
ALTER INDEX [schema.]index
[ storage-clause ]
[ INITRANS integer ]
[ MAXTRANS integer ]

ALTER INDEX [schema.]index
{ALLOCATE EXTENT ([SIZE integer [K|M]]
[ DATAFILE ‘filename’ ])
| DEALLOCATE UNUSED [KEEP integer [ K|M ] ] }

重建索引
当索引效率降低时,可以重建索引,或合并索引碎片:
ALTER INDEX [schema.] index REBUILD
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ REVERSE | NOREVERSE ]

ALTER INDEX summit.orders_id_idx REBUILD ONLINE;
ALTER INDEX summit.orders_id_idx COALESCE;

索引相关的数据字典视图:
dba_indexes
dba_ind_columns

 

你可能感兴趣的:(OCP复习 - 管理(12) - 管理索引)