当前位置:  数据库>oracle

oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .

    来源: 互联网  发布时间:2014-10-04

    本文导语:  一、索引简介 1、索引相当于目录 2、索引是通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率。 3、索引的创建要适度,多了会影响增删改的效率,少了会影响查询的效率,索引最好创建在取值分散...

一、索引简介

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与Mysql主键、索引及分页的区别小结
  • 从Oracle的约束到索引
  • Oracle 9i轻松取得建表和索引的DDL语句
  • Oracle9i取得建表和索引的DDL语句
  • oracle10g全文索引自动同步语句使用方法
  • Oracle建立二进制文件索引的方法
  • 在Oracle 10g中如何获得索引的专家建议
  • WEB前端 iis7站长之家
  • 用Oracle 9i全索引扫描快速访问数据
  • Oracle中如何把表和索引放在不同的表空间里
  • Oracle索引存储关系到数据库的运行效率
  • Oracle索引聚簇表的数据加载
  • 在Oracle中监控和跟踪索引使用情况
  • Oracle中检查是否需要重构索引的sql
  • 轻松取得Oracle 9i建表和索引DDL语句
  • 深度揭露Oracle索引使用中的限制
  • Oracle索引(B*tree与Bitmap)的学习总结
  • oracle 索引不能使用深入解析
  • SQL Server和Oracle数据库索引介绍
  • 深入oracle分区索引的详解
  • oracle 视图权限 oracle 创建视图权限不足
  • oracle 创建表空间步骤代码
  • Linux系统下创建第二个oracle数据库
  • oracle 创建数据库小知识
  • Oracle新手教程 手工创建数据库的全部脚本及说明
  • Oracle创建用户权限的过程
  • Oracle WebLogic Server 安装并创建域
  • Oracle 10g创建表空间和用户并指定权限
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • oracle 创建表空间详细介绍
  • 在RedHat Advance Server下安装Oracle9i R2不能创建数据库问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle 技巧学习笔记
  • 技巧分享 删除Oracle10G中的垃圾表
  • Oracle 数据库操作技巧集
  • [小技巧]手工扩大Oracle数据库表空间的方法
  • Oracle认证的技巧
  • Oracle技巧分享
  • ORACLE SQL-UPDATE、DELETE、INSERT优化和使用技巧分享
  • 小技巧 Oracle杀死死锁进程问题的解决
  • 技巧学习 在Python环境下连接Oracle数据库
  • Oracle 建立临时表语法及使用技巧
  • 技巧分享 Oracle数据库的启动和关闭
  • Oracle Form中COMMIT的概述及使用技巧
  • Hibernate Oracle sequence的使用技巧
  • 保持Oracle数据优良性能的技巧分享
  • oracle数据库自动备份技巧
  • oracle—SQL技巧之(一)连续记录查询sql案例测试
  • Oracle数据库的空间管理技巧
  • oracle—SQL技巧之(二)WMSYS.WM_CONCAT函数实现多行记录用逗号拼接在一起
  • Oracle数据库中的字符处理技巧总结
  • 通过JDBC连接oracle数据库的十大技巧
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3