一、索引简介
1、索引相当于目录
2、索引是通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率。
3、索引的创建要适度,多了会影响增删改的效率,少了会影响查询的效率,索引最好创建在取值分散的列上,避免对同一张表创建过多的索引
4、索引的使用对用户来说是透明的,由系统来决定什么时候使用索引。
5、Oracle支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。(请见附件)
a. 单列索引和复合索引
b.B树索引(create index时默认的类型)
B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何,查询速度基本相同。另B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询
--Unique 唯一索引 值唯一,但允许存在null,主键默认存在唯一索引,但列不能为null
--Non-Unique:非唯一索引,其索引值可以重复,允许为NULL。默认情况下,Oracle创建的索引是非唯一索引
--Reverse Key:反向关键字索引。通过在创建索引时指定“REVERSE”关键字,可以创建反向关键字索引,被索引的每个数据列中的数据都是反向存储
的,但仍然保持原来数据列的次序
c.位图索引(对列值范围少,如性别 政治面貌适用,而不是默认的B树索引)
c.函数索引
当需要经常访问一些函数或表达式时,可以将其存储在索引中,当下次访问时,由于该值已经计算出来了,因此,可以大大提高那些在WHERE子句中包含该函数或
表达式的查询操作的速度;
函数索引既可以使用B树索引,也可以使用位图索引。
二、管理索引的原则
使用索引应该遵循以下一些基本的原则。
1.小表不需要建立索引。
2.对于大表而言,如果经常查询的记录数目少于表中总记录数目的15%时,可以创建索引。这个比例并不绝对,它与全表扫描速度成反比。
3.对于大部分列值不重复的列可建立索引。
4.对于基数大的列,适合建立B树索引,而对于基数小的列适合建立位图索引。
5.对于列中有许多空值,但经常查询所有的非空值记录的列,应该建立索引。
6.LONG和LONG RAW列不能创建索引。
7.经常进行连接查询的列上应该创建索引。
8.在使用CREATE INDEX语句创建查询时,将最常查询的列放在其他列前面。
9.维护索引需要开销,特别时对表进行插入和删除操作时,因此要限制表中索引的数量。对于主要用于读的表,则索引多就有好处,但是,一个表如果经常被更改,则索引应少点。
10.在表中插入数据后创建索引。如果在装载数据之前创建了索引,那么当插入每行时,Oracle都必须更改每个索引。
三、LONG类型(可存储2G)主要用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型,存储这么长的请使用 pstat1.setCharacterStream()方法,资料见附件P26
四、创建索引语法如下
CREATE INDEX语句的语法如下:
CREATE [UNIQUE] | [BITMAP] INDEX index_name
ON table_name([column1 [ASC|DESC],column2
[ASC|DESC],…] | [express])
[TABLESPACE tablespace_name]
[PCTFREE n1]
[STORAGE (INITIAL n2)]
[NOLOGGING]
[NOLINE]
[NOSORT];
五、
1、查看索引信息可以在 all_indexs 表中
2、查看索引信息及引用的列 all_ind_columns
3、查看函数索引信息 all_ind_expressions
4、oracle比较智能,有时候即使创建了索引也不会使用,比如说在数据量比较少的情况下,可能就不会用索引
5、当进行全表扫描的时候,不用索引效率会更好
6、查询可能会使用缓存,所以说如果发现执行速度变快了,不一定说明你的sql更优了,有可能是使用到了缓存而已
7、使用plsql中的“解释计划”功能可以比较执行计划的消耗,进而写出更优的sql
相关推荐
Oracle索引的创建、简介、技巧,希望可以给学习Oracle的人带来帮助!
### Oracle索引创建详解 #### 一、Oracle索引的重要性及基本概念 在数据库系统中,索引是一种用于提高数据检索速度的数据结构。对于大型数据库系统而言,索引的合理设计与使用对于提升查询性能至关重要。Oracle...
### Oracle索引优化相关知识点详解 ...综上所述,正确地理解和运用Oracle索引的相关概念和技巧对于优化数据库性能至关重要。开发人员应该仔细考虑索引的设计和使用方式,避免由于不当使用而导致的性能问题。
详解oracle索引的作用及创建索引,索引的技巧及索引在开发中能解决的问题
内容概要:本文详细介绍了 Oracle中的各种索引类型及其使用场景,包括 B*Tree索引、位图索引、索引组织表、降序索引、反向键索引和基于函数的索引。每种索引的优缺点、适用场合和创建方法均有详细介绍。文章还讨论了...
### Oracle 9i 索引管理秘密:顶级专家谈索引管理技巧 #### 一、书籍概述 《Oracle 索引管理秘密,顶级专家谈索引管理技巧》是一本由多位Oracle顶级专家共同编著的专业性书籍,旨在深入探讨Oracle数据库中索引管理...
根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...
一、索引简介 1、索引相当于目录 2、索引是通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率。 3、索引的创建要适度,多了会影响增删改的效率,少了会影响查询的效率,索引最好创建在取值分散...
总结,Oracle索引优化是一个涉及多方面因素的过程,包括索引类型选择、设计策略、维护以及特定于Oracle的技术。理解并熟练运用这些知识,能有效提升数据库的性能,降低系统响应时间,从而提高用户满意度。在实践中,...
Oracle数据库中的索引维护是数据库管理员日常工作中至关重要的一部分,尤其是在大型企业级...在Oracle数据库中,索引维护是确保数据库性能稳定和高效运行的重要环节,对数据库管理员来说,理解和掌握这些技巧至关重要。
因此,要根据查询模式合理创建和维护索引。 3. 使用子查询的正确方式。在某些情况下,子查询能够有效地简化查询逻辑。但是,子查询如果处理不当,也会导致性能问题。例如,相关子查询(correlated subqueries)在...
这本书《Oracle查询优化改写 技巧与案例》应该是DBA和Oracle开发人员的重要参考资源。 首先,查询优化的基础是理解执行计划。Oracle通过解析SQL语句,生成执行计划,然后按照这个计划执行。执行计划描述了数据如何...
书中可能会讲解何时创建B树索引、位图索引、函数索引,以及如何利用复合索引来优化多列查询。同时,也可能会讨论索引的维护和优化,如重建索引、合并索引等。 3. **连接优化**:在处理多个表的联接查询时,优化JOIN...
Oracle查询优化改写技巧与案例涉及到如何通过改进SQL语句、利用索引、调整表设计和数据库参数来提升查询速度,降低资源消耗。以下将详细介绍一些核心的Oracle查询优化策略和实践案例。 1. **SQL语句优化** - **...
Oracle数据库的索引简介、创建和使用小技巧
### ORACLE进阶操作技巧知识点详解 #### 一、数据库安装与配置 ##### 安装注意事项 - **根据用户数量进行特定安装**:在安装Oracle数据库之前,首先需要考虑的是预期用户数量。不同规模的应用场景可能需要不同版本...
在Oracle数据库系统中,高级查询技巧是提升数据库管理员和程序员工作效率的关键。这些技巧不仅能够帮助我们获取更精确、更高效的数据,还能使数据处理过程更加灵活。以下是对"Oracle高级查询技巧"的详细阐述。 一、...
由于提供的【部分内容】信息是...以上知识点涉及了Oracle索引技术的核心概念、创建与管理、优化技巧以及一些高级特性,这些知识点对于数据库管理员、开发人员和架构师在数据库设计和性能调优方面具有重要的参考价值。
在OLTP(在线事务处理)系统中,由于涉及大量Insert、Update操作,数据库回滚段的大小、索引的创建(如B*树索引或bitmap索引)、系统全局区(SGA)的大小,以及SQL语句的效率都需要仔细考虑。而在Data Warehousing...
### Oracle查询优化改写技巧与案例 在数据库管理和开发领域,Oracle因其强大的功能、灵活性以及对大型企业级应用的支持而受到广泛青睐。然而,在实际应用过程中,如何有效地进行查询优化,提升系统的整体性能,成为...