管理索引
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) 修改索引段存储参数
存储参数initial、minextents是不能修改的,而修改其他存储参数只对新分配的区起作用
alter index upper_ename storage(next 200k maxentents 50);
b) 分配和释放索引空间
当使用sql*loader或insert给表装载数据时,也会为索引填加数据。如果索引段空间不足,将导致动态扩展索引段。
alter index deparment_dname allocate extent(size 1m);
释放多余空间
alter index department_dname deallocate unused;
c) 重建索引
执行delete操作时,会删除表的数据,但在索引上仅仅进行逻辑删除,其所占用的空间不能供其他插入操作使用。如果在索引列上频繁执行update或delete操作,应该定期重建索引,以提高其空间利用率。
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’;
分享到:
相关推荐
了解和掌握如何通过NAVICAT创建和管理索引是MySQL数据库管理员的基本技能。正确地使用索引可以极大地提高数据检索速度,减少数据库服务器的负载,但同时也要注意,过多的索引可能会占用额外的存储空间,并可能在插入...
《管理索引——数据库高效检索的关键》 在信息化时代,数据管理成为了企业运营的重要环节,而索引作为数据库管理中的核心工具,对于提升数据检索效率起着至关重要的作用。本篇将深入探讨索引的概念、类型及其在...
sqlserver管理索引优化SQL语句
在文档"Oracle管理索引、权限和角色.doc"中,主要涵盖了以下几个关键知识点: 1. **数据完整性**:数据完整性是数据库设计的核心原则之一,它确保存储在数据库中的数据准确无误并遵循预设的规则。在Oracle中,数据...
Oracle 管理索引、权限和角色复习过程 本文将对 Oracle 管理索引、权限和角色进行详细的介绍,包括数据完整性、约束、索引、权限和角色等方面的知识点。 一、数据完整性 数据完整性是指数据库中的数据遵从一定的...
Elasticsearch+thinkphp5.1后台管理索引和文档+权限管理,可查看https://blog.csdn.net/weixin_39934453/article/details/120097526
* 用 Enterprise Manager 创建索引:选择创建索引的表并进入管理索引对话框,新建索引、编辑索引、删除索引等操作。 * 用 Transact-SQL 语句创建索引:使用 CREATE INDEX 语句创建索引,例如 CREATE [ UNIQUE ] [ ...
Oracle和SQL Server作为两种广泛应用的关系型数据库管理系统,都支持创建和管理索引以优化查询速度。本文将深入探讨这两个数据库系统中如何批量创建和删除索引,以及它们对系统运行效率的影响。 首先,让我们了解...
MongoDB 是一个流行的开源、基于文档的分布式数据库系统,它以JSON格式的文档作为数据存储单元,适合处理大量半结构化和非结构化数据。...在设计和管理索引时,需要结合实际的查询需求和数据模式,做出最佳选择。
Oracle数据库是世界上最广泛使用的数据库...而合理地创建和管理索引,则能够显著提升查询速度,提高整体系统性能。作为数据库管理员或开发者,理解和熟练掌握这两个概念至关重要,尤其是对于处理大量数据的系统来说。
因此,合理地创建和管理索引是数据库优化的重要部分。 在SQL中,我们可以通过CREATE INDEX语句来创建索引,例如: ```sql CREATE INDEX idx_name ON table_name(column_name); ``` 这将在`column_name`列上创建名为...
数据库中的索引是一种为了加速数据查询而创建的数据结构,它为表中的字段提供了一种快速访问的方法。...然而,合理地使用和管理索引是数据库性能优化的关键,需要根据实际业务需求和数据特性进行调整。
总的来说,文件索引的创建是提升系统性能的重要手段,通过合理地设计和管理索引,可以显著加快数据的读取速度,从而优化整体的用户体验。在实际应用中,需要根据具体的业务场景和数据特性,选择最合适的索引策略,并...
本文将深入探讨Oracle与MySQL在索引管理方面的差异,包括索引类型、创建与管理索引的语法,以及索引优化的策略,并提供详细的代码示例。 Oracle与MySQL在索引管理方面各有特点。Oracle提供了更复杂的索引类型和维护...
### 知识点详解 ...通过合理地设计和管理索引,不仅可以加快数据检索的速度,还能保证数据的准确性和完整性,从而显著提升整个系统的性能。因此,在数据库设计和维护过程中,索引的设计与管理是至关重要的环节。
总结,Oracle的索引是提升数据库性能的关键工具,理解索引的工作原理,合理设计和管理索引,能有效优化数据库的查询性能,但同时也要注意其带来的额外存储和维护成本。在实际应用中,需要根据业务需求和查询模式,...
使用索引管理器可以创建索引,并且可以管理索引的属性。 在创建索引时,需要指定索引的名称、索引的类型和索引的列。索引的名称是索引的标识符,索引的类型可以是簇索引或非簇索引,索引的列是指索引所依赖的列。...
在数据库管理领域,索引是优化查询性能的关键技术之一。通过创建索引,数据库系统能够更高效地查找、排序和过滤数据,从而显著提升应用程序的响应速度和整体性能。...合理地设计和管理索引对于优化数据库性能至关重要。