精华内容
下载资源
问答
  • oracle索引类型
    千次阅读
    2021-05-02 05:10:15

    逻辑上:

    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. b-tree索引

    Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE

    INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。

    2. 位图索引(bitmap index)

    位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。

    3. 基于函数的索引

    比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。

    4. 分区索引和全局索引

    这2个是用于分区表的时候。前者是分区内索引,后者是全表索引

    5. 反向索引(REVERSE)

    这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值

    (10001,10002,10033,10005,10016..)

    这种情况默认索引分布过于密集,不能利用好服务器的并行

    但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。

    6.HASH索引

    HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。使用HASH索引必须要使用HASH集群。

    各种Oracle索引类型介绍

    标签:数据库   update   creat   rac   也有   分布   dex   index   function

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/langtianya/p/6655050.html

    更多相关内容
  • oracle 索引类型

    2019-04-20 01:04:19
    NULL 博文链接:https://stevenfeng.iteye.com/blog/1884088
  • oracle索引类型normal

    千次阅读 2021-05-05 08:01:21
    BASED NORMAL NORMAL/REV UNIQUENES ---NONUNIQUE NONUNIQUE NONUNIQUE UNIQUE INDEX_NAME ---EMP_ENAME_INDEX EMP_JOB_BMP IDX_ENAME PK_EMP 如上所... INDEX_TYPE 用于标识索引类型: NORMAL 表示普通......我们可...

    BASED NORMAL NORMAL/REV UNIQUENES ---NONUNIQUE NONUNIQUE NONUNIQUE UNIQUE INDEX_NAME ---EMP_ENAME_INDEX EMP_JOB_BMP IDX_ENAME PK_EMP 如上所示, INDEX_NAME 用于标识索引名。 INDEX_TYPE 用于标识索引类型: NORMAL 表示普通......

    我们可以根据 ORACLE 数据字典 dba_indexes 和 dba_ind_columns 里的信息生成 创建索引的脚本。在导入完成后再运行这些创建索引的脚本。 dba_indexes 里记录了索引类型和存储参数等信息。 dba_ind_columns 里记录了索引的字段信息, 它......

    Diane 是一个新入行的 DBA,当数据库服务器正在运行时,她执行了 shutdown 命令,然后她发现 Oracle 在等待所有已连接到数据库的用户断开连接。请问她是采用哪种方式关 闭数据库的?() A. NORMAL B. ABORT C. IMMEDIATE D. NONE ......

    A. C:\\oracle\\product\\10.2.0\\db_1 B. C:\\ C. C:\\oracle\\product\\database D. C:\\windows\\oracle 10、下面哪个命令会导致重新启动 ORACLE 时要进行实例恢复? A. shutdown immediate B. shutdown normal C. shutdown ......

    9.在输入 URL 进入 Oracle Enterprice Manager Database Control 的时候,必须指出 ip 地址和端口号 。 10.在登录 Oracle Enterprice Manager Database Control 时,连接身份有两种选择,分 别为 normal 和 sysdba。 1. RDBMS 的全称是......

    C.Oracle 忽略不可用的控制文件。 D.Oracle 返回警告信息,并进行数据库恢复。 (5) Bob 试图正常关闭数据库,Oracle 说实例处于空闲状态,他试图启动数据库,Oracle 说 数据库已启动,Bob 最好使用什么命令强制关闭数据库?B A.NORMAL B......

    ORACLE字段类型详解_电子/电路_工程科技_专业资料。字段类型 CHAR VARCHAR2 749 NCHAR 中文说明 固定长度字符串 可变长度的字符串 限制条件 最大长度 2000 最大长度 4000 bytes 其它说明 bytes 可做索引 ......

    Oracle出于对效率的考虑,某些约束会关联到索引,从而可 以更快的检查约束,主键约束就是一个典型的例子。 ?索引的结构使得搜索索引的键值很快。oracle索引的结构类 似 于平衡二叉树,但每个非叶子节点存储了多个值,降低了 树 的高度。 ...

    一、Oracle 的索引陷阱 一个表中有几百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这主要可能是 oracle 的索引限制造成的。Oracle 的索引有一些索引限制,在这些索引限制发 生的情况下,即使已经加了索引,oracle 还是......

    Oracle中索引的存储原理浅析_IT/计算机_专业资料。本文从原理的角度简要介绍了Oracle中和索引存储相关的参数以及索引存储的方法。 Oracle 中索引的存储原理浅析霍俊伟 明廷堂 (河南大学网络信息中心 河南 开封 475001) 摘要: 摘要:本文从......

    NORMAL 或 IMMEDIATE 选项关闭数据库时触发 当用户连接到数据库并建立会话时触发 当一个会话从数据库中断开时触发 发生服务器错误时触发 DML 事件 DDL 事件 数据库事件触发器的分类 SERVERERROR 种 类 简 称 作 用 数据操纵语言触发......

    Diane 是一个新入行的 DBA,当数据库服务器正在运行时,她执行了 shutdown 命令, 然后她发现 Oracle 在等待所有已连接到数据库的用户断开连接。请问她是采用哪种方式关 闭数据库的?() A. NORMAL B. ABORT C. IMMEDIATE D. NONE......

    Oracle 索引的使用规则与性能调优 索引分类逻辑上: Unique 唯一索引 物理上: B-tree: Normal 正常型 B 树 Bitmap 位图索引 索引结构:B-tree:适合与大量的增、删、改(OLTP);不能用包含 OR 操作符的查询; 适合高基数的列 (唯一......

    Oracle 服务器所在的主机名为 DEDICATED B) Oracle 服务器所在的主机名为 scce C) 对应数据库的 SID 为 scce D) 对应数据库的 SID 为 xfhtdb 10、现在要启动数据库,那么下面哪一个启动语句是错误的( ) A) STRATUP NORMAL B)......

    --- --- --- --- ---PK_DEPT DEPT USERS NORMAL UNIQUE VALID PK_EMP EMP USERS NORMAL UNIQUE VALID 使用数据字典 dba_ind_columns 获得 scott 用户的索引所基于表和列的等信息。 SQL>select index_name,table_name,column......

    C.Oracle 忽略不可用的控制文件。 D.Oracle 返回警告信息,并进行数据库恢复。 (5) Bob 试图正常关闭数据库,Oracle 说实例处于空闲状态,他试图启动数据库,Oracle 说 数据库已启动,Bob 最好使用什么命令强制关闭数据库?B A.NORMAL B......

    C.Oracle 忽略不可用的控制文件。 D.Oracle 返回警告信息,并进行数据库恢复。 (5) Bob 试图正常关闭数据库,Oracle 说实例处于空闲状态,他试图启动数据库,Oracle 说 数据库已启动,Bob 最好使用什么命令强制关闭数据库?B A.NORMAL B......

    SQLCODE 返回遇到的 Oracle 错误号, SQLERRM 返回遇到的 Oracle 错误信息. 如: SQLCODE=-100 SQLERRM=’no_data_found ‘ SQLCODE=0 SQLERRM=’normal, successfual completion’ 例 6. 将 ORACLE 错误代码及其信息存入错误代码表 ......

    C.Oracle 忽略不可用的控制文件。 D.Oracle 返回警告信息,并进行数据库恢复。 (5) Bob 试图正常关闭数据库,Oracle 说实例处于空闲状态,他试图启动数据库,Oracle 说 数据库已启动,Bob 最好使用什么命令强制关闭数据库?B A.NORMAL B......

    C.Oracle 忽略不可用的控制文件。 D.Oracle 返回警告信息,并进行数据库恢复。 (5) Bob 试图正常关闭数据库,Oracle 说实例处于空闲状态,他试图启动数据库,Oracle 说数据库已启动,Bob 最好使用什么命令强制关闭数据库?B A.NORMAL B.......

    展开全文
  • 当我们对所有索引类型有了了解之后,就可以针对性的写出高效的SQL语句、建立最合适的索引。 那Oracle索引都有哪些类型呢? 首先我们来看一下索引的数据结构:B树 在介绍之前,首先建立一张表 create table tes...

    Oracle索引和MySQL索引是一个概念,都是为了提高数据库查询效率,例如字典的目录,就是一种索引。不同的索引有不同的查询效率,比如字典的目录有以拼音首字母的,有偏旁部首的。当我们对所有索引类型有了了解之后,就可以针对性的写出高效的SQL语句、建立最合适的索引。
    那Oracle索引都有哪些类型呢?
    首先我们来看一下索引的数据结构:B树

    在介绍之前,首先建立一张表

    create table test(
    	id number,
    	a number,
    	b number,
    	c number
    );
    alter table test add constraint pk_test primary key (id) using index;
    

    插入数据

    begin
    for i in 1 .. 100000 loop
    	insert into test
    	values
    	(i,mod(i,2),mod(i,20000),mod(i,20000));
    	end loop;
    	commit;
    end;
    

    表建好了,有一个主键id,和三个值a、b、c。
    下面开始我们的表演

    INDEX UNIQUE SCAN索引唯一扫描

    看下面这个SQL语句

    select id from test where id = 5000;
    

    我们知道id是主键,具有唯一性,而上述语句的SQL是一个等值条件(id=400,而<、>、>=等都属于非等值条件),所以该语句执行的索引为INDEX UNIQUE SCAN,这个速度是最快的。
    条件:主键等值查询

    INDEX RANGE SCAN索引范围扫描

    看下面这个SQL

    select id from test where id<5000;
    

    这个属于主键上的非等值查询条件,走的就是索引范围扫描,当然还包括非主键索引情况。
    下面我们再针对a、b、c建立两个索引:

    create index idx_test_id_ab on test(a,b);
    create index idx_test_id_c on test(c);
    

    第一个索引是一个a和b的复合索引,第二个索引建立在c上。
    我们看下面这个SQL

    select * from test where c=200;
    

    该语句也会走索引范围扫描。
    你是否有疑问,我们如何知道语句是走哪种索引的?这可以从Oracle的执行计划看到,查看Oracle的执行计划只需要将你要观察的索引加入到其监控中。

    exec dbms.stats.gather_table_stats('table_space','table_name');
    exec dbms.stats.gather_index_stats('table_space','index_name');
    

    条件:主键非等值查询、非主键查询。

    INDEX FULL SCAN索引全扫描

    对于表来说,有全表扫描。对于索引来说,也存在全索引扫描,与全表扫描非常类似。索引扫描只在CBO模式下起作用。

    什么是CBO模式?这就不得不说Oracle的两种优化器:
    RBO:Rule-Based Optimization,Oracle 10g版本后被弃用,RBO是基于预先设定好的语法优先级对语法进行执行计划的优化,所以开发者必须非常了解RBO的规则,这种方式非常呆板,因为其只认规则。
    CBO:Cost-Based Optimization,Oracle 8引入,Oracle 10g取代了RBO,根据SQL执行情况的统计信息来对SQL的执行计划进行优化,这部分是Oracle公司保密的。问过Oracle公司的讲师说也不清楚具体细节。

    这种方式有个特点,会自动对数据进行排序。省去了全表扫描后,再进行order by的操作。
    因为B树索引本身就是排序好的,默认是ASC升序,可以在创建索引的时候进行指定。但是Oracle的执行计划会自动针对升序的降序查询进行优化,那么为什么要存在降序操作?答案是:在复合索引上,可以对(a desc,b asc),满足一定的业务场景。
    我们看下面这个SQL

    select * from test order by id;
    

    因为排序的条件只有id,并且id已经建立索引,所以执行计划会被优化成INDEX FULL SCAN。
    条件:表和表进行连接查询,查询语句中有order by,group by并且子句所有列都在索引中(联合索引)
    小tip:如何看oracle的执行计划?sqlplus也可,但当然还有更好的方式,我用的Navicat,执行完sql后,可以通过它的“解释”功能看执行计划,走的什么索引类型,走的哪个索引。

    INDEX FAST FULL SCAN快速全表扫描

    快速全表扫描是扫描索引中的所有数据块,与全表扫描比,区别就是其不进行排序,即在这种方式下,返回的数据不是以排序的形式。可以多块读、并行读。所以叫FAST。
    看下面的语句

    select a,b from test where b<1000;
    

    这个语句有两个特点,第一:返回值a和b都在索引上,第二:查询条件也在索引上。这条语句通过B树索引查询到rowid后,不需要额外在去原来的表里查数据了。为什么呢?回忆一下,符合索引包括根、枝、叶,叶子上存储的是索引值,包括:rowid、键值、键值长度、所属标号。看到没,如果所取的值都在索引上,就可以直接返回了,如果是

    select a,b,c from test where b<1000;
    

    这样返回值多了一个c,并不在复合索引上,所以还会用查到的rowid,去原表中取c的值,这样就不会走INDEX FAST FULL SCAN了。

    INDEX SKIP SCAN索引跳跃扫描

    这个也很简单,在复合索引中,可能会有如下类型数据:

    ab
    11
    12
    13
    04
    05
    06

    可以看b的值是不同的,a的取值只有0和1。索引跳跃扫描是扫描意思呢?就是当在这样一种a,b取值的情况下,对a和b建复合索引,oracle的优化器会将其优化成两个索引,分别是当a=0,a=1时的索引。
    那么我们在a,b上建联合索引,仿佛有些问题。理论上不会在这样的一个没有多大区分度的a值上建索引的,所以一般看到INDEX SKIP SCAN,其一般开销都很大。

    INDEX COMBINE索引组合扫描

    当一个查询语句中,有两个查询,这两个查询列对应两个索引值。这种情况下就会出现索引组合扫描。比如:

    select * from test where b<1000 and c>200;
    

    ps,这里假设我们对b和c分别建立的索引。
    走INDEX COMBINE会比单独走b或c的索引,开销都要小。
    有心人是否看到,这个sql要取的值是所有,并非b或c。那么如果取的b或c呢?看下面的

    INDEX JOIN索引联立

    select b,c from test where b<1000 and c>200;
    

    这种情况就是所查询的值在索引上,可以直接返回,不在用查到的rowid回原表取数据的情况。
    严格来说,INDEX COMBINE和INDEX JOIN都不能算是一种独立的索引,只是对开头的5种索引的一种优化或补充。


    到这里7种索引类型都介绍完了,留一个疑问

    INDEX FAST FULL SCAN一定比INDEX FULL SCAN要快吗?

    展开全文
  • oracle索引类型及扫描方式大整理new
  • Oracle中的索引类型

    2021-08-13 15:19:19
    唯一索引:主键(唯一、自增) 组合索引:当查询时条件由多个字段组成并且被频繁使用时,适合创建组合索引 fan'xiang'ji'an

    这里写图片描述

     唯一索引:主键(唯一、自增)

    组合索引:当查询时条件由多个字段组成并且被频繁使用时,适合创建组合索引

    反向键索引:适用于某列值前面相同后面不同,且连续增长

    位图索引:举例(性别字段)----取值类型少但是数据较多时,适合创建位图索引

    基于函数的索引:见名知意,某个函数使用次数频繁时创建

    创建索引的语句:

    唯一索引:

    create unique index index_name on table_name(column_name);

    组合索引:

    create index index_name on table_name(column_name1,column_name2);

    反向键索引:

    create index index_name on table_name(column_name) reverse;

    位图索引:

    create bitmap index index_name on table_name(column_name);

    基于函数的索引:

    create index index_name on table_name(函数(column_name));

    索引的作用、优点:

    提高sql语句执行的性能,快速定位需要查找的表的内容(物理位置)

    展开全文
  • Oracle中有多少种索引类型

    千次阅读 2021-05-02 05:21:35
    满意答案逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引物理上:Partitioned 分区索引NonPartitioned 非分区索引B-tree:Normal ...
  • oracle查看表索引及索引类型

    千次阅读 2019-11-29 15:58:42
    select b . uniqueness , a . index_name , a . table_name , a . column_name FROM all_ind_columns a , all_indexes b ...可以看到 INDEX_NAME中有两个 名字相同的列,代表这是一个联合索引
  • (2)普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。 (3)唯一索引:索引列中的值必须是唯一的,但是允许为空值。 (4) 主键索引:是一种特殊...
  • 主要讲解了索引的扫描方式、存储方式、索引优化等
  • 各种Oracle索引类型介绍 逻辑上: Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引 物理上: Partitioned 分区索引 NonPartitioned ...
  • Oracle中的索引分类

    千次阅读 2021-05-01 06:00:22
    Oracle中的索引分类(2012-05-01 08:12:24)标签:索引b树位图创建检索功能杂谈Oracle中可以创建多种类型索引,以适应各种表的特点和各种查询条件的特点;可以按列的多少,索引列是否唯一、索引数据的组织形式对索引...
  • Oracle学习笔记(10)管理索引

    千次阅读 2021-05-02 05:22:42
    Oracle学习笔记(10)管理索引1、索引和表的关系:书目录和书的关系。在数据库中只有索引和表才能申请空间分配。是独立存在的物理结构。实现数据的唯一性。2、索引:独立于表的指针(物理结构)。指向表数据:rowid。...
  • oracle数据库中如何建立索引,建立索引有什么优势,索引该如何使用
  • Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引。(1)、与索引相关视图查询DBA_INDEXES视图可得到表中所有...
  • 最近遇到一个Oracle SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,可是添加新功能后,时间达到了4~5s。虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在了哪里,...
  • ORACLE索引提高效率

    2021-05-06 07:27:52
    ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证.除了那些LONG或LONG RAW数.....
  • Oracle索引技术

    2018-09-26 15:35:28
    Oracle 索引技术,正确使用Oracle数据库的索引不仅可以实现良好的性能,更重要的是能够创造出可伸缩的...本书在介绍各种类型索引的过程中,始终围绕性能这一主线,透彻分析了为Oracle数据库创建和优化索引的方方面面。
  • 视图—–是由SELECT查询语句(可以是单表或者多表查询)定义的一个"逻辑表",只有定义而无数据,是一个"虚表"....索引目标是为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考...
  • Oracle索引

    千次阅读 2021-05-01 03:35:30
    Oracle索引Oracle索引(index)最大的作用是用来优化数据库查询的效率,提升数据库的查询性能。就好比书的目录一样,可以通过目录来直接定位所需内容存在的页数,大大提高检索效率。Oracle数据库中如果某列出现在查询...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,209
精华内容 64,083
关键字:

oracle索引类型