查询 DBA INDEXES 和 DBA IND COLUMNS 以检索表上的索引列表
使用USER_INDEXES 和USER_IND_COLUMNS检索当前方案的信息


索引几个特点:
1.索引高度较低
2.索引存储列值及rowid
3.索引本身有序

50W记录和500W记录查询是一样的时间。索引高度相同。

查看索引高度

  1. select index_name,blevel from user_ind_statistics;

B树索引。
索引由root(根块)、branch(茎块)、leaf(叶子块)组成。
branch用来搜索,leaf用来存储key。
B树索引是平衡的。
索引的高度是从根块到叶块所需的块数

创建b树索引

  1. create index idx_id on t1(id);

位图索引:

  1. create bitmap index idx_emp on emp(deptno);

位图连接索引:
位图连接索引是基于两个表的连接的位图索引,在数据仓库环境中使用这种索引可以提高连接维度(Dimension)表和事实(Fact)表的查询的性能。创建位图连接索引时,标准方法是连接索引中常用的维度表和事实表。当用户在进行事实表和维度表的连接查询时,就不需要执行连接,因为在位图连接索引中已经有可用的连接结果。通过压缩位图连接索引中的ROWID进一步改进性能,并且减少访问数据所需的IO数量。

  1. create bitmap index FACT_DIM_COL_IDX
  2. on FACT (DIM.Descr_Col)
  3. from FACT,DIM
  4. where FACT.JoinCol =DIM.JoinCol;

位图连接的语法比较特别,其中包含FROM子句和WHERE子句,并且引用两个单独的表。索引列通常是维度表中的描述列—如果维度表是CUSTOMER,它的主键是Customer_ld,那么通常索引Customer_Name这样的列。如果事实表名为SALES,可以使用如下命令创建索引:

  1. create bitmap index SALES_CUST_NAME_IDX
  2. on SALES(CUSTOMER.Customer_Name)
  3. from SALES,CUSTOMER
  4. where SALES.customer_ID=CUSTOMER.Customer_ID;

函数索引

函数索引预先对表达式产生的结果跟行的物理地址进行绑定,在where 条件中引用特定的表达式是会直接搜寻索引,而不会全表扫描
**

  1. create table fixf.emp(
  2. id int GENERATED BY DEFAULT AS IDENTITY (START WITH 1 INCREMENT BY 10) PRIMARY KEY,
  3. name varchar2(10)
  4. );
  5. create index emp_name_index ON fixf.emp(upper(name)) ONLINE;
  6. select * from fixf.emp where upper(name)='AAA';





什么时候用索引:
l 列的基数多
l 表的行数多
列出现在where或者join条件中

删除索引

  1. DROP INDEX index;

快速重建索引

  1. alter index IX_FIXF_SVR_XZHJYMX_ZHID rebuild PARALLEL tablespace fixf STORAGE (PCTINCREASE 0);

在线重建索引

注意重建索引是可以使用rebuild online 选项,以允许对表或者分区进行dml操作,但不能对位图索引指定rebuild online ,对强制关联完整性约束的索引也是如此。

  1. create index index_name on table (coll,..) online;
  2. alter index index_name rebuild online;

全局索引特点

1.全局索引只能是B树索引
2.oracle 默认不会维护全局索引,在对表分区进行截断,添加,删除,分割操作时,如果没有制定alter table 命令的
update globle indexes子句,就必须重建全局索引。

查询所有非系统索引

  1. SELECT OWNER,
  2. TABLE_NAME,
  3. INDEX_NAME,
  4. INDEX_TYPE,
  5. UNIQUENESS,
  6. PARTITIONED,
  7. DEGREE,
  8. LOGGING,
  9. STATUS
  10. FROM all_indexes
  11. WHERE owner NOT LIKE 'APEX%'
  12. AND owner NOT LIKE 'BI%BIPLATFORM'
  13. AND owner NOT LIKE 'BI%MDS'
  14. AND owner NOT IN ('CTXSYS','DBSNMP','EXFSYS','FLOWS_FILES','HR','IX','MDSYS','OE','OLAPSYS','ORDSYS','OUTLN','OWBSYS','PM','SCOTT','SH','SYS','SYSMAN','SYSTEM','WMSYS','XDB')
  15. ORDER BY owner,
  16. table_name,
  17. index_name