您的位置:首页 > 数据库 > Oracle

Oracle 11g笔记——索引

2016-05-10 09:11 721 查看
索引类型

二叉树索引、B树索引(B-tree Indexes)

B树索引是使用最多的一种索引。默认情况下,创建的索引都是B树索引。使用B树结构来存放索引。B树底层是叶子节点,叶子节点存放索引值和行标识(ROWIND)

二叉树聚簇索引(B-tree Cluster Indexes)

哈希聚簇索引(Hash Cluster Indexes)

反向索引(Reverse Key Indexes)

反向索引也属于B树索引,它把索引值按字节反转过来。反向索引适合集群

位图索引(Bitmap Indexes)

位图索引使用位图作为索引的结构,对于索引列中的每个同的值(特别强调,是列的列值),Oracle将建立一个位图,如果列的值出现,则Oracle将把位图中相应的位(bit)标识为1;

若那个值没有出现,Oracle会把位图中相应的位(bit)标识为0。Oracle通过一个映射函数把位图中的位(bit)转变为ROWID。

位图索引适合唯一值很少的列(如:SEX),也就是重复值很多的列。

位图连接索引(Bitmap Join Indexes)

基于函数的索引(Function-Based Indexes)

示例:

唯一性索引:

SQL>create unique index index_name on ct(name) tablespace bigtbs_01;

二叉树索引

SQL>create index ind_name4 on ct(name);

位图索引,适合唯一值很少的列

SQL>create bitmap index ind_name5 on ct2(name);

反向索引

SQL>create index ind_name3 on ct(name) reverse;

函数索引

SQL>create index ind_name on ct(al + av*100);

SQL>create index ind_name2 on ct(upper(name));

重建索引

SQL>alter index ind_name3 rebuild;

删除索引

SQL>drop index ind_name3;

将索引移至另外一个表空间(alger index ... rebuild tablespace...)

SQL>select index_name,tablespace_name from dba_indexes where index_name='INDEX_PS'; 查询

SQL>alter index index_ps rebuild tablespace product; 将索引移至product表空间

SQL>select index_name,tablespace_name from dba_indexes where index_name='INDEX_PS'; 再次查询

如何得到创建索引的SQL语句

1、设置SQL*PLUS环境变量为LONG,注:若不执行此操作,执行DDL时会产生错误

SQL>SET LONG 10000

2、得到创建索引的SQL语句

SQL>select dbms_metadata.get_ddl('INDEX','TND_TMF','test') from dual;

注:test为索引的所有者

如何知道数据库中有哪些索引

SQL>select index_name,index_type,table_name from dba_indexes;

设置索引无效,可以让语句跳过无效索引

SQL>alter session set skip_unusable_indexes=true;

设置索引,可以让语句不跳过无效索引

SQL>alter session set skip_unusable_indexes=false;

重建索引,使索引变得有效

SQL>alter index index_name rebuild;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: