oracle 索引

★索引分类:

------------------------------

逻辑上=>
  Single column 单行索引
  Concatenated 多行索引
  Unique 唯一索引
  NonUnique 非唯一索引
  Function-based函数索引
  Domain 域索引
物理上=>
  Partitioned 分区索引
  NonPartitioned 非分区索引
  B-tree:
    Normal 正常型B树
    Rever Key 反转型B树
    Bitmap 位图索引

索引结构------------------------------------------
  B-tree:
    适合与大量的增、删、改(OLTP);
    不能用包含OR操作符的查询;
    适合高基数的列(唯一值多)
    典型的树状结构;
    每个结点都是数据块;
    大多都是物理上一层、两层或三层不定,逻辑上三层;
    叶子块数据是排序的,从左向右递增;
    在分支块和根块中放的是索引的范围;
  Bitmap:
    适合与决策支持系统;
    做UPDATE代价非常高;
    非常适合OR操作符的查询;
    基数比较少的时候才能建位图索引;
  树型结构:
    索引头
    开始ROWID,结束ROWID(先列出索引的最大范围)
    BITMAP
    每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT对应的ROWID有值

★怎样建立最佳索引?

-----------------------------------------------------------------------

1、明确地创建索引

  create index index_name on table_name(field_name)

  tablespace tablespace_name

  pctfree 5

  initrans 2

  maxtrans 255

  storage

  (

  minextents 1

  maxextents 16382

  pctincrease 0

  );

2、创建基于函数的索引

  常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:

  create index idx_func on emp(UPPER(ename)) tablespace tablespace_name;

3、创建位图索引

  对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:

  create bitmap index idx_bitm on class (classno) tablespace tablespace_name;

4、明确地创建唯一索引

  可以用create unique index语句来创建唯一索引,例:

  create unique index dept_unique_idx on dept(dept_no) tablespace idx_1;

5、创建与约束相关的索引

  可以用using index字句,为与unique和primary key约束相关的索引,例:

  alter table table_name

  add constraint PK_primary_keyname primary key(field_name)

  using index tablespace tablespace_name;

如何创建局部区索引?

  1)基础表必须是分区表

  2)分区数量与基础表相同

  3)每个索引分区的子分区数量与相应的基础表分区相同

  4)基础表的自分区中的行的索引项,被存储在该索引的相应的自分区中,例如

  create index TG_CDR04_SERV_ID_IDX on TG_CDR04(SERV_ID)

  Pctfree 5

  Tablespace TBS_AK01_IDX

  Storage(

  MaxExtents 32768

  PctIncrease 0

  FreeLists 1

  FreeList Groups 1

  )

  local

  /

时间: 2024-10-24 14:57:30

oracle 索引的相关文章

Oracle 索引<七>

Oracle 索引 管理索引-原理介绍 ? 介绍 索引是用于加速数据存取的数据对象.合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能.索引有很多种我们主要介绍常用的几种: 为什么添加了索引后,会加快查询速度呢? 创建索引 ? 单列索引 单列索引是基于单个列所建立的索引,比如: create index 索引名 on 表名(列名); ? 复合索引 复合索引是基于两列或是多列的索引.在同一张表上可以有多个索引,但是要求列的组合必须不同,比如: create index emp_idx1

Oracle 索引 简介

1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<table_name> (<column_name> | <expression> ASC | DESC, <column_name> | <expression> ASC | DESC,...) TABLESPACE <tablespace_name>

Oracle索引

Oracle索引,码迷,mamicode.com

oracle索引总结

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! oracle索引总结 简介 1.说明 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引.在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信息. 2)索引是建立在表上的可选对象:索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率 3)索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表:

【Oracle】Oracle索引

在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快.索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分. 索引分类: 逻辑分类 single column or concatenated    对一列或多列建所引 unique or nonunique  唯一的和非唯一的所引,也就是对某一列或几列的键值(key

【转】Oracle索引HINT的使用

转自:Oracle索引HINT的使用       存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查询路径,一定程度能生成更优的执行计划.         在SQL的查询过程中,索引是快速查询数据的方法之一,是最重要.最常见的手段,这篇文章将讨论和索引相关的HINT的使用. 1.HINT的使用方法: select /*+ INDEX (tab pk_tab)*/ * from test.tab;

oracle索引的理解

1.当查询表时where条件中有多个索引时,优先使用主键索引,其它索引会失效. 2.当查询的返回的数据占总量数据的百分比小于20%时,建索引才有效果 3.不是主键的索引值可以为空,主键索引不能为空. 4. 容易引起oracle索引失效的原因很多: 1).在索引列上使用函数.如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了. 2).新建的表还没来得及生成统计信息,分析一下就好了 3).基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引.

[转]Oracle 索引质量分析

http://blog.csdn.net/leshami/article/details/23687137 索引质量的高低对数据库整体性能有着直接的影响.良好高质量的索引使得数据库性能得以数量级别的提升,而低效冗余的索引则使得数据库性能缓慢如牛,即便是使用高档的硬件配置.因此对于索引在设计之初需要经过反复的测试与考量.那对于已经置于生产环境中的数据库,我们也可以通过查询相关数据字典得到索引的质量的高低,通过这个分析来指导如何改善索引的性能.下面给出了演示以及索引创建的基本指导原则,最后给出了索引

oracle 索引失效原因

摘自网络http://blog.chinaunix.net/uid-23622436-id-3184356.html oracle 索引失效的原因 分类: Oracle 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上(见12) 6) 对小表查询 7) 提示不使用索引 8) 统计数据不真实 9) CBO计算走索引花费过大的情况.其实也包含了上面的情况,这里指的是

数据库使用-oracle索引的创建和分类

数据库使用-oracle索引的创建和分类 索引是数据库中一种可选的数据结构,她通常与表或簇相关.用户可以在表的一列或数列上建立索引,以提高在此表上执行 SQL 语句的性能.就像本文档的索引可以帮助读者快速定位所需信息一样,Oracle 的索引提供了更为迅速地访问表数据的方式.正确地使用索引能够显著的减少磁盘 I/O. Oracle 提供了多种类型的索引,可以互为补充地提升查询性能: ·        平衡树索引(B-tree index) ·        平衡树簇索引(B-tree clust