`
oolala
  • 浏览: 103208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
09c341db-7f05-3f2b-a572-9ee69a5d8a77
unix环境高级编程
浏览量:22698
社区版块
存档分类
最新评论

管理索引

阅读更多

管理索引

1)索引是用于加速数据存取的数据库对象。通过使用索引,可以降低i/o次数,提高数据访问性能。

按索引数据的存储方式:B*树索引、反向索引、位图索引

按索引列的个数:单列索引、复合索引

按索引列值惟一性:惟一索引、非惟一索引

 

a)单列索引和复合索引

单列索引是基于单个列所建立的索引;复合索引是基于二列或多列所建立的索引。B*树索引列的个数不能超过32列,位图索引列的个数不能超过30列。可以在同一张表上建立多个索引,但要求列的组合不同。

create index emp_idx1 on emp (ename,job);

 

b)惟一索引和非惟一索引

 惟一索引是索引列值不能重复的索引;非惟一索引是索引列值可以重复的索引。无论是惟一索引还是非惟一索引列都允许为null当定义主键约束或惟一约束时,oracle会自动在相应的约束列上建立惟一索引。

 

2)索引管理指导方针

a)装载数据后建立索引

b)索引正确的表和列

 c)索引应该建立在where子句经常引用的表列上。如果在大表上频繁使用某列或几列作为条件执行检索操作,并且检索行数低于总行数15%,那么应该考虑在这些列上建立索引

 d)为了提高多表连接的性能,应该在连接列上建立索引

 e)不要在小表上建立索引

 f)如果经常需要基于某列或某几列执行排序操作,那么通过在这些列上建立索引,可以加快数据排序的速度。

 g)限制表索引的个数

 

3)删除不再需要的索引

a)删除小表上建立的索引。如果表很小,使用索引不会加快查询速度

b)删除查询语句不会引用的索引。如果在某列或某几列上建立索引,但这些不会在where子句中引用,那么应该删除相应的索引。

 

4)建立索引

Ø       建立B*树索引

如果在wehre子句中经常引用某列或几列,应该基于这些列建立B*树索引。

SQL>create index ind_ename on emp(ename) pctfree 30 tablespace user02

 

Ø         使用B*树索引

建立B*树索引后,如果在where子句中引用索引列,oracle会根据统计信息确定位是否使用B*树索引定位表行数据。

SQL>set autotrace on explain

SQL>select * from emp where ename=’scott’;

 

1)       建立位图索引

B*树索引建立在重复值很少的列上,而位图索引建立在重复值很多、不同值相对固定的列上,使用位图索引可以节省大量磁盘空间,其占用空间仅仅是在相同列上建立B*树索引所用空间的1/20~1/10.建立位图索引时,oracle会基于每个不同值建立一个位图。

 

建立位图索引:create bitmap index idx_gender on customers(cust_gender);

 

初始化参数create_bitmap_area_size用于指定建立位图索引时分配的位图区尺寸,默认值8M,该参数越大,建立位图索引速度越快。

修改该参数的示例如下:

alter system set create_bitmap_area_size=8388608 scope=spfile;

 

2)       建立反向索引

create index customers_pk on customers(cust_id) reverse;

 

3)       修改索引

a)       修改索引段存储参数

存储参数initialminextents是不能修改的,而修改其他存储参数只对新分配的区起作用

alter index upper_ename storage(next 200k maxentents 50);

b)       分配和释放索引空间

当使用sql*loaderinsert给表装载数据时,也会为索引填加数据。如果索引段空间不足,将导致动态扩展索引段。

alter index deparment_dname allocate extent(size 1m);

 

释放多余空间

alter index department_dname deallocate unused;

 

c)       重建索引

执行delete操作时,会删除表的数据,但在索引上仅仅进行逻辑删除,其所占用的空间不能供其他插入操作使用。如果在索引列上频繁执行updatedelete操作,应该定期重建索引,以提高其空间利用率。

alter index department_dname rebuild;

 

d)       联机重建索引

使用rebuild选项重建索引时,如果其他用户正在表上执行dml操作,那么重建索引将失败。为了最小化dml操作的影响,重建索引时,可以使用rebuild online选项。

alter index department_dname rebuild online;

 

4)       删除索引

drop index department_dname;

 

5)       显示表的所有索引

SQL>select index_name,index_type,uniqueness from dba_indexes

where owner=’scott’ and table_name=’emp’;

分享到:
评论

相关推荐

    MySQL数据库:使用NAVICAT工具创建和管理索引.pptx

    了解和掌握如何通过NAVICAT创建和管理索引是MySQL数据库管理员的基本技能。正确地使用索引可以极大地提高数据检索速度,减少数据库服务器的负载,但同时也要注意,过多的索引可能会占用额外的存储空间,并可能在插入...

    管理索引PPT学习教案.pptx

    《管理索引——数据库高效检索的关键》 在信息化时代,数据管理成为了企业运营的重要环节,而索引作为数据库管理中的核心工具,对于提升数据检索效率起着至关重要的作用。本篇将深入探讨索引的概念、类型及其在...

    sqlserver管理索引优化SQL语句

    sqlserver管理索引优化SQL语句

    Oracle管理索引、权限和角色.doc

    在文档"Oracle管理索引、权限和角色.doc"中,主要涵盖了以下几个关键知识点: 1. **数据完整性**:数据完整性是数据库设计的核心原则之一,它确保存储在数据库中的数据准确无误并遵循预设的规则。在Oracle中,数据...

    Oracle管理索引、权限和角色复习过程.pdf

    Oracle 管理索引、权限和角色复习过程 本文将对 Oracle 管理索引、权限和角色进行详细的介绍,包括数据完整性、约束、索引、权限和角色等方面的知识点。 一、数据完整性 数据完整性是指数据库中的数据遵从一定的...

    Elasticsearch7.14.0+thinkphp5.1后台管理索引和文档+权限管理

    Elasticsearch+thinkphp5.1后台管理索引和文档+权限管理,可查看https://blog.csdn.net/weixin_39934453/article/details/120097526

    数据库 创建索引 sql oracle

    * 用 Enterprise Manager 创建索引:选择创建索引的表并进入管理索引对话框,新建索引、编辑索引、删除索引等操作。 * 用 Transact-SQL 语句创建索引:使用 CREATE INDEX 语句创建索引,例如 CREATE [ UNIQUE ] [ ...

    oracle、sql数据库批量建索引

    Oracle和SQL Server作为两种广泛应用的关系型数据库管理系统,都支持创建和管理索引以优化查询速度。本文将深入探讨这两个数据库系统中如何批量创建和删除索引,以及它们对系统运行效率的影响。 首先,让我们了解...

    MongoDB索引管理与高级索引.pdf

    MongoDB 是一个流行的开源、基于文档的分布式数据库系统,它以JSON格式的文档作为数据存储单元,适合处理大量半结构化和非结构化数据。...在设计和管理索引时,需要结合实际的查询需求和数据模式,做出最佳选择。

    oracle约束和索引笔记

    Oracle数据库是世界上最广泛使用的数据库...而合理地创建和管理索引,则能够显著提升查询速度,提高整体系统性能。作为数据库管理员或开发者,理解和熟练掌握这两个概念至关重要,尤其是对于处理大量数据的系统来说。

    索引

    因此,合理地创建和管理索引是数据库优化的重要部分。 在SQL中,我们可以通过CREATE INDEX语句来创建索引,例如: ```sql CREATE INDEX idx_name ON table_name(column_name); ``` 这将在`column_name`列上创建名为...

    数据库用索引为什么比不用索引更快

    数据库中的索引是一种为了加速数据查询而创建的数据结构,它为表中的字段提供了一种快速访问的方法。...然而,合理地使用和管理索引是数据库性能优化的关键,需要根据实际业务需求和数据特性进行调整。

    文件索引的创建 文件索引的创建 文件索引的创建

    总的来说,文件索引的创建是提升系统性能的重要手段,通过合理地设计和管理索引,可以显著加快数据的读取速度,从而优化整体的用户体验。在实际应用中,需要根据具体的业务场景和数据特性,选择最合适的索引策略,并...

    Oracle与MySQL索引管理深度解析:特性、代码示例与最佳实践

    本文将深入探讨Oracle与MySQL在索引管理方面的差异,包括索引类型、创建与管理索引的语法,以及索引优化的策略,并提供详细的代码示例。 Oracle与MySQL在索引管理方面各有特点。Oracle提供了更复杂的索引类型和维护...

    索引讲述什么是索引.txt

    ### 知识点详解 ...通过合理地设计和管理索引,不仅可以加快数据检索的速度,还能保证数据的准确性和完整性,从而显著提升整个系统的性能。因此,在数据库设计和维护过程中,索引的设计与管理是至关重要的环节。

    09 oracle的索引 PPT

    总结,Oracle的索引是提升数据库性能的关键工具,理解索引的工作原理,合理设计和管理索引,能有效优化数据库的查询性能,但同时也要注意其带来的额外存储和维护成本。在实际应用中,需要根据业务需求和查询模式,...

    实验六 索引的创建、查看和删除(一)-不经典不传

    使用索引管理器可以创建索引,并且可以管理索引的属性。 在创建索引时,需要指定索引的名称、索引的类型和索引的列。索引的名称是索引的标识符,索引的类型可以是簇索引或非簇索引,索引的列是指索引所依赖的列。...

    索引的优点和缺点

    在数据库管理领域,索引是优化查询性能的关键技术之一。通过创建索引,数据库系统能够更高效地查找、排序和过滤数据,从而显著提升应用程序的响应速度和整体性能。...合理地设计和管理索引对于优化数据库性能至关重要。

Global site tag (gtag.js) - Google Analytics