十六、oracle 索引

摘要:
六、显示索引信息1)、在同一张表上可以有多个索引,通过查询数据字典视图dba_indexs和user_indexs,可以显示索引信息。

一、管理索引-原理介绍
索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。索引有很多种我们主要介绍常用的几种:
为什么添加了索引后,会加快查询速度呢?

二、创建索引
1)、单列索引
单列索引是基于单个列所建立的索引
语法:create index 索引名 on 表名(列名);
eg、create index nameIndex on custor(name);
2)、复合索引
复合索引是基于两列或是多列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同,比如:
create index emp_idx1 on emp(ename, job);
create index emp_idx1 on emp(job, ename);
以上这两个索引是两个不同的索引。

三、使用原则
1)、在大表上建立索引才有意义
2)、在where子句或是连接条件上经常引用的列上建立索引
3)、索引的层次不要超过4层
这里能不能给学生演示这个效果呢?
如何构建一个大表呢?

四、索引的缺点
索引有一些先天不足:
1)、建立索引,系统要占用大约为表1.2倍的硬盘和内存空间来保存索引。
2)、更新数据的时候,系统必须要有额外的时间来同时对索引进行更新,以维持数据和索引的一致性。
实践表明,不恰当的索引不但于事无补,反而会降低系统性能。因为大量的索引在进行插入、修改和删除操作时比没有索引花费更多的系统时间。
比如在如下字段建立索引应该是不恰当的:
1. 很少或从不引用的字段;
2. 逻辑型的字段,如男或女(是或否)等。
综上所述,提高查询效率是以消耗一定的系统资源为代价的,索引不能盲目的建立,这是考验一个DBA是否优秀的很重要的指标

五、其它索引
按照数据存储方式,可以分为B*树、反向索引、位图索引;
按照索引列的个数分类,可以分为单列索引、复合索引;
按照索引列值的唯一性,可以分为唯一索引和非唯一索引。
此外还有函数索引,全局索引,分区索引...

对于索引我还要说:
在不同的情况,我们会在不同的列上建立索引,甚至建立不同种类的索引,请记住,技术是死的,人是活的。
比如:B*树索引建立在重复值很少的列上,而位图索引则建立在重复值很多、不同值相对固定的列上。

六、显示索引信息
1)、在同一张表上可以有多个索引,通过查询数据字典视图dba_indexs和 user_indexs,可以显示索引信息。其中dba_indexs用于显示数据库所有的索引信息,而user_indexs用于显示当前用户的索引信 息:select index_name, index_type from user_indexes where table_name = '表名';
2)、显示索引列
通过查询数据字典视图user_ind_columns,可以显示索引对应的列的信息
select table_name, column_name from user_ind_columns where index_name ='IND_ENAME';
你也可以通过pl/sql developer工具查看索引信息

免责声明:文章转载自《十六、oracle 索引》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【kotlin】kotlin中List中添加List怎么操作微信小程序项目,实现图书列表渲染,以及图书详情跳转下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JDBC(与Oracle的连接)(转)

JDBC编程步骤:----java与Oracle数据的连接(lomboz_eclipse环境下)1.在Oracle数据库安装文件夹中找到jdbc文件夹→lib文件夹→classesl2.jar2.lomboz_eclipse中导入此Jar包导入方法:建立一个项目,在项目名称上右键鼠标选择Build Path→Add External Archives→选择...

Mysql,SqlServer,Oracle主键自动增长的设置

在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,NAME VARCHAR(15),age INT,email VARCHAR(50),gender VARCHAR(10)) i...

[转]Oracle 修改或者删除临时表 ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引

本文转自:http://blog.csdn.net/treasurelifelhf/article/details/7290729    由于存储过程出现问题,导致前台页面无法显示数据。执行存储过程发现临时表少一字段,无奈无论怎么修改或者删除临时表都报错 ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引。                ...

Oracle 数据文件 reuse 属性 说明(转载)

Oracle 表空间 创建参数 说明 http://blog.csdn.net/tianlesoftware/archive/2011/01/27/6166928.aspx 当我们对表空间添加数据文件的时候,有一个reuse 属性。 10g的官网对这个参数的说明如下: REUSE Specify REUSE to allow Oracle to reuse...

elasticsearch之python备份

一:elasticsearch原理 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,...

oracle10.2.0.2+SDE for oracle 10安装

这回真是折腾了!没想到oracle 有这么庞大,而且版本太多了,比SQL复杂,强大。Oracle安装倒不难,在安装sde时碰到不少麻烦。首先是从同事那拷了9i,我以为9i就是一个版本,其实里面还分小版本,9.0,9.2。。我装了9.0,然后 sde是 sdefororacle 9i 的9.2版本,装了三台机还是不行。然后换成oracle10i,没想到这...