《第06章索引.ppt》由会员分享,可在线阅读,更多相关《第06章索引.ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第六六章章 索引索引(教材第10章)n目标:n列出各种类型的索引及其用途 n创建各种类型的索引 n重新组织索引 n维护索引 n监视索引的使用 索引分类 n逻辑 n单列或串接 n唯一或非唯一 n基于函数 n域 n物理 n分区或非分区 nB 树 n正常或反向键 n位图 B 树索引 索引项标题索引项标题 键列长度键列长度 键列值键列值 行标识行标识 根根 分支分支 叶叶 索引项索引项 位图索引 关键字关键字 开始开始 行标识行标识 结束结束 行标识行标识 位图位图 表表 索引索引 块块 10块块 11块块 12文件文件 3比较 B 树索引和 位图索引 B 树树 适用于高基数列适用于高基数列 更新关
2、键字的成本相对较低更新关键字的成本相对较低 使用使用 OR 谓词进行查询时谓词进行查询时效率较低效率较低 对对 OLTP 很有用很有用 位图位图 适用于低基数列适用于低基数列 更新键列的成本非常高更新键列的成本非常高 使用使用 OR 谓词进行查询时谓词进行查询时效率较高效率较高 对数据仓库很有用对数据仓库很有用 创建正常的 B 树索引 CREATE INDEX hr.employees_last_name_idxON hr.employees(last_name)PCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 5
3、0)TABLESPACE indx;创建索引:原则 n平衡查询和 DML n存放在单独的表空间中 n使用统一的区大小:块数是 5 的倍数或对表空间使用 MINIMUM EXTENT 大小 n对于大型索引,请考虑使用 NOLOGGING n通常,INITRANS 在索引中比在对应的表中高。创建位图索引 CREATE BITMAP INDEX orders_region_id_idxON orders(region_id)PCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;更改索引的
4、存储参数 ALTER INDEX employees_last_name_idxSTORAGE(NEXT 400KMAXEXTENTS 100);分配和回收索引空间 ALTER INDEX orders_region_id_idxALLOCATE EXTENT(SIZE 200KDATAFILE/DISK6/indx01.dbf);ALTER INDEX orders_id_idxDEALLOCATE UNUSED;重建索引 n使用 ALTER INDEX 命令执行以下操作:n将索引移到另一个表空间中 n通过移除已删除的项,提高空间的使用率 ALTER INDEX orders_region_
5、id_idx REBUILDTABLESPACE indx02;联机重建索引 n可以使用最小限度的表锁定来重建索引。n某些限制仍然适用。ALTER INDEX orders_id_idx REBUILD ONLINE;合并索引 合并前合并前 合并后合并后 ALTER INDEX orders_id_idx COALESCE;检查索引及其有效性 ANALYZE INDEX orders_region_id_idxVALIDATE STRUCTURE;INDEX_STATS删除索引 n在批量加载前,请删除并重新创建索引。n删除不常用的索引,并在需要时创建这些索引。n删除并重新创建无效的索引。DRO
6、P INDEX hr.deptartments_name_idx;标识未用索引 n要开始监视索引的使用,请执行以下语句:n要停止监视索引的使用,请执行以下语句:ALTER INDEX hr.dept_id_idx MONITORING USAGEALTER INDEX hr.dept_id_idx NOMONITORING USAGE获取索引信息 n可以通过查询以下视图来获取有关索引的信息:nDBA_INDEXES:提供有关索引的信息 nDBA_IND_COLUMNS:提供有关索引列的信息 nV$OBJECT_USAGE:提供有关索引使用情况的信息 验证索引验证索引nUSER_INDEXES 数据字典视图包含索数据字典视图包含索引的名称及其唯一性引的名称及其唯一性nUSER_IND_COLUMNS数据字典视图数据字典视图包含索引名称包含索引名称、表名以及列名表名以及列名SQL SELECTic.index_name,ic.column_name,ic.column_position col_pos,ix.uniqueness FROMuser_indexes ix,user_ind_columns ic WHERE ic.index_name=ix.index_name ANDic.table_name=EMP;