查询 DBA INDEXES 和 DBA IND COLUMNS 以检索表上的索引列表
使用USER_INDEXES 和USER_IND_COLUMNS检索当前方案的信息
索引几个特点:
1.索引高度较低
2.索引存储列值及rowid
3.索引本身有序
查看索引高度
select index_name,blevel from user_ind_statistics;
B树索引。
索引由root(根块)、branch(茎块)、leaf(叶子块)组成。
branch用来搜索,leaf用来存储key。
B树索引是平衡的。
索引的高度是从根块到叶块所需的块数
创建b树索引
create index idx_id on t1(id);
位图索引:
create bitmap index idx_emp on emp(deptno);
位图连接索引:
位图连接索引是基于两个表的连接的位图索引,在数据仓库环境中使用这种索引可以提高连接维度(Dimension)表和事实(Fact)表的查询的性能。创建位图连接索引时,标准方法是连接索引中常用的维度表和事实表。当用户在进行事实表和维度表的连接查询时,就不需要执行连接,因为在位图连接索引中已经有可用的连接结果。通过压缩位图连接索引中的ROWID进一步改进性能,并且减少访问数据所需的IO数量。
create bitmap index FACT_DIM_COL_IDX
on FACT (DIM.Descr_Col)
from FACT,DIM
where FACT.JoinCol =DIM.JoinCol;
位图连接的语法比较特别,其中包含FROM子句和WHERE子句,并且引用两个单独的表。索引列通常是维度表中的描述列—如果维度表是CUSTOMER,它的主键是Customer_ld,那么通常索引Customer_Name这样的列。如果事实表名为SALES,可以使用如下命令创建索引:
create bitmap index SALES_CUST_NAME_IDX
on SALES(CUSTOMER.Customer_Name)
from SALES,CUSTOMER
where SALES.customer_ID=CUSTOMER.Customer_ID;
函数索引
函数索引预先对表达式产生的结果跟行的物理地址进行绑定,在where 条件中引用特定的表达式是会直接搜寻索引,而不会全表扫描
**
create table fixf.emp(
id int GENERATED BY DEFAULT AS IDENTITY (START WITH 1 INCREMENT BY 10) PRIMARY KEY,
name varchar2(10)
);
create index emp_name_index ON fixf.emp(upper(name)) ONLINE;
select * from fixf.emp where upper(name)='AAA';
什么时候用索引:
l 列的基数多
l 表的行数多
列出现在where或者join条件中
删除索引
DROP INDEX index;
快速重建索引
alter index IX_FIXF_SVR_XZHJYMX_ZHID rebuild PARALLEL tablespace fixf STORAGE (PCTINCREASE 0);
在线重建索引
注意重建索引是可以使用rebuild online 选项,以允许对表或者分区进行dml操作,但不能对位图索引指定rebuild online ,对强制关联完整性约束的索引也是如此。
create index index_name on table (coll,..) online;
alter index index_name rebuild online;
全局索引特点
1.全局索引只能是B树索引
2.oracle 默认不会维护全局索引,在对表分区进行截断,添加,删除,分割操作时,如果没有制定alter table 命令的
update globle indexes子句,就必须重建全局索引。
查询所有非系统索引
SELECT OWNER,
TABLE_NAME,
INDEX_NAME,
INDEX_TYPE,
UNIQUENESS,
PARTITIONED,
DEGREE,
LOGGING,
STATUS
FROM all_indexes
WHERE owner NOT LIKE 'APEX%'
AND owner NOT LIKE 'BI%BIPLATFORM'
AND owner NOT LIKE 'BI%MDS'
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')
ORDER BY owner,
table_name,
index_name