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

    满意答案

    逻辑上:

    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有值

    01分享举报

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

    2019-04-20 01:04:19
    oracle学习笔记--三大索引.zip,oracle学习笔记--三大索引.pptx
  • 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-03 11:02:23
    逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引物理上:Partitioned 分区索引NonPartitioned 非分区索引B-tree:Normal 正常型B树...

    逻辑上:

    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集群。

    1.逻辑结构:

    所谓逻辑结构就是数据与数据之间的关联关系,准确的说是数据元素之间的关联关系。

    注:所有的数据都是由数据元素构成,数据元素是数据的基本构成单位。而数据元素由多个数据项构成。

    逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构。也可以统一的分为线性结构和非线性结构。

    2.物理结构:

    数据的物理结构就是数据存储在磁盘中的方式。官方语言为:数据结构在计算机中的表示(又称映像)称为数据的物理结构,或称存储结构。它所研究的是数据结构在计算机中的实现方法,包括数据结构中元素的表示及元素间关系的表示。

    而物理结构一般有四种:顺序存储,链式存储,散列,索引

    3.逻辑结构的物理表示:

    线性表的顺序存储则可以分为静态和非静态:静态存储空间不可扩展,初始时就定义了存储空间的大小,故而容易造成内存问题。

    线性表的链式存储:通过传递地址的方式存储数据。

    单链表:节点存储下一个节点的地址-------------->单循环链表:尾节点存储头结点的地址

    双链表:节点存储前一个和后一个节点的地址,存储两个地址。---------------->双循环链表:尾节点存储头结点的地址。

    4.高级语言应用:

    数组是顺序存储

    指针则是链式存储

    展开全文
  • 最近学习了Oracle修改字段类型方法,留做记录。 有一个表名为tb,字段段名为name,数据类型nchar(20)。 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20...
  • oracle三大索引类型

    千次阅读 2021-09-09 14:25:04
    详解Oracle数据库的三大索引类型 今天主要介绍Oracle数据库的三大索引类型,仅供参考。下面,我们一起来看。 作者:波波说运维来源:今日头条|2019-11-29 07:37 收藏 分享 今天主要介绍Oracle数据库的三大索引类型,...

    详解Oracle数据库的三大索引类型

    今天主要介绍Oracle数据库的三大索引类型,仅供参考。下面,我们一起来看。

    作者:波波说运维来源:今日头条|2019-11-29 07:37

     收藏

      分享

    今天主要介绍Oracle数据库的三大索引类型,仅供参考。

    详解Oracle数据库的三大索引类型

    一、B-Tree索引

    三大特点:高度较低、存储列值、结构有序

    1. 利用索引特性进行优化

    • 外键上建立索引:不但可以提升查询效率,而且可以有效避免锁的竞争(外键所在表delete记录未提交,主键所在表会被锁住)。
    • 统计类查询SQL:count(), avg(), sum(), max(), min()
    • 排序操作:order by字段建立索引
    • 去重操作:distinct
    • UNION/UNION ALL:union all不需要去重,不需要排序

    2. 联合索引

    应用场景一:SQL查询列很少,建立查询列的联合索引可以有效消除回表,但一般超过3个字段的联合索引都是不合适的.

    应用场景二:在字段A返回记录多,在字段B返回记录多,在字段A,B同时查询返回记录少,比如执行下面的查询,结果c1,c2都很多,c3却很少。

     
    
    1. select count(1) c1 from t where A = 1; 
    2. select count(1) c2 from t where B = 2; 
    3. select count(1) c3 from t where A = 1 and B = 2; 

    联合索引的列谁在前?

    普遍流行的观点:重复记录少的字段放在前面,重复记录多的放在后面,其实这样的结论并不准确。

     
    
    1. drop table t purge; 
    2. create table t as select * from dba_objects; 
    3. create index idx1_object_id on t(object_id,object_type); 
    4. create index idx2_object_id on t(object_type,object_id); 

    等值查询:

     
    
    1. select * from t where object_id = 20 and object_type = 'TABLE'; 
    2. select /*+ index(t,idx1_object_id) */ * from t where object_id = 20 and object_type = 'TABLE'; 
    3. select /*+ index(t,idx2_object_id) */ * from t where object_id = 20 and object_type = 'TABLE'; 

    结论:等值查询情况下,组合索引的列无论哪一列在前,性能都一样。

    范围查询:

     
    
    1. select * from t where object_id >=20 and object_id < 2000 and object_type = 'TABLE'; 
    2. select /*+ index(t,idx1_object_id) */ * from t where object_id >=20 and object_id < 2000 and object_type = 'TABLE'; 
    3. select /*+ index(t,idx2_object_id) */ * from t where object_id >=20 and object_id < 2000 and object_type = 'TABLE'; 

    结论:组合索引的列,等值查询列在前,范围查询列在后。 但如果在实际生产环境要确定组合索引列谁在前,要综合考虑所有常用SQL使用索引情况,因为索引过多会影响入库性能。

    3. 索引的危害

    表上有过多索引主要会严重影响插入性能;

    • 对delete操作,删除少量数据索引可以有效快速定位,提升删除效率,但是如果删除大量数据就会有负面影响;
    • 对update操作类似delete,而且如果更新的是非索引列则无影响。

    4. 索引的监控

     
    
    1. --监控 
    2. alter index [index_name] monitoring usage; 
    3. select * from v$object_usage; 
    4. --取消监控:  
    5. alter index [index_name] nomonitoring usage; 

    根据对索引监控的结果,对长时间未使用的索引可以考虑将其删除。

    5. 索引的常见执行计划

    • INDEX FULL SCAN:索引的全扫描,单块读,有序
    • INDEX RANGE SCAN:索引的范围扫描
    • INDEX FAST FULL SCAN:索引的快速全扫描,多块读,无序
    • INDEX FULL SCAN(MIN/MAX):针对MAX(),MIN()函数的查询
    • INDEX SKIP SCAN:查询条件没有用到组合索引的第一列,而组合索引的第一列重复度较高时,可能用到

    二、位图索引

    应用场景:表的更新操作极少,重复度很高的列。

    优势:count(*) 效率高

     
    
    1. create table t( 
    2. name_id, 
    3. gender not null, 
    4. location not null, 
    5. age_range not null, 
    6. data 
    7. )as select  
    8. rownum, 
    9. decode(floor(dbms_random.value(0,2)),0,'M',1,'F') gender, 
    10. ceil(dbms_random.value(0,50)) location, 
    11. decode(floor(dbms_random.value(0,4)),0,'child',1,'young',2,'middle',3,'old') age_range, 
    12. rpad('*',20,'*') data 
    13. from dual connect by rownum <= 100000;  
     
    
    1. create index idx_t on t(gender,location,age_range); 
    2. create bitmap index gender_idx on t(gender); 
    3. create bitmap index location_idx on t(location); 
    4. create bitmap index age_range_idx on t(age_range); 
     
    
    1. select * from t where gender = 'M' and location in (1,10,30) and age_range = 'child'; 
    2. select /*+ index(t,idx_t) */* from t where gender = 'M' and location in (1,10,30) and age_range = 'child'; 

    三、函数索引

    应用场景:不得不对某一列进行函数运算的场景。

    利用函数索引的效率要低于利用普通索引的。

    oracle中创建函数索引即是 你用到了什么函数就建什么函数索引,比如substr

     
    
    1. select * from table where 11=1 and substr(field,0,2) in ('01') 

    创建索引的语句就是

     
    
    1. create index indexname on table(substr(fileld,0,2)) online nologging ; 

     

    展开全文
  • 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 表示普通......我们可...
  • Oracle中索引分类

    千次阅读 2021-05-01 06:00:22
    Oracle中索引分类(2012-05-01 08:12:24)标签:索引b树位图创建检索功能杂谈Oracle中可以创建多种类型索引,以适应各种表的特点和各种查询条件的特点;可以按列的多少,索引列是否唯一、索引数据的组织形式对索引...
  • (2)普通索引:MySQL基本索引类型,没有什么限制,允许在定义索引的列插入重复值和空值,纯粹为了查询数据更快一点。 (3)唯一索引:索引列的值必须是唯一的,但是允许为空值。 (4) 主键索引:是一种特殊...
  • 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有两个 名字相同的列,代表这是一个联合索引
  • 类型 含义 存储描述 备注 CHAR 固定长度字符串 最大长度2000bytes   VARCHAR2 可变长度的字符串, 最大长度4000bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度2000bytes   ...
  • Oracle中索引详解(整理)

    千次阅读 2021-05-04 08:51:04
    一、 ROWID的概念存储了row在数据文件的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /,row在数据块的存储方式SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;比 如:...
  • Oracle索引建立原则确定针对该表的操作是大量的查询操作还是大量的增删改操作。尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句出现的字段建立索引。where语句不得不对查询列采用函数...
  • 查看oracle中表的索引

    千次阅读 2021-05-08 07:19:15
    oracle中表的索引信息存在user_indexes 和user_ind_columns 两张表里面,其中,user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息,user_ind_columns统视图存放的是索引名称,对应的表和列等sql...
  • 一旦建立了索引,在用户表建立、更改和删除数据库时, Oracle就自动地维护索引。创建索引时,下列准则将帮助用户做出决定:1) 索引应该在SQL语句的"where"或"and"部分涉及的表列(也称谓词)被建立...
  • 1、修改索引段存储参数03:31:28 SQL> alter index scott.indx_ename deallocate unused;Index altered.03:31:36 SQL> alter index scott.indx_ename allocate extent(size 1m);Index altered.2、重建索引03:32...
  • Oracle中索引的原理

    千次阅读 2020-12-07 16:16:30
    索引是一种数据库结构,能够就数据库的某列提供快速查询,而不用检索整个表格(官方的不行)。 在 Oracle 数据库,存储的每一行数据都有一个 rowID 来标识。当 Oracle 存储着大量的数据时,意味着有大量的 ...
  • Oracle索引技术

    2018-09-26 15:35:28
    Oracle 索引技术,正确使用Oracle数据库的索引不仅可以实现良好的性能,更重要的是能够创造出可伸缩的...本书在介绍各种类型索引的过程,始终围绕性能这一主线,透彻分析了为Oracle数据库创建和优化索引的方方面面。
  • oracle指定索引

    千次阅读 2022-03-22 16:40:27
    oracle指定索引语法: /*+index(t ind_name)*/ “t”: 为表的别名, 如果查询语句有表别名,这里必须使用表别名, 如果没有表别名,则直接使用表名 “ind_name”: 要使用的索引名称。 需要将指定索引的语句写...
  • Oracle学习笔记(10)管理索引

    千次阅读 2021-05-02 05:22:42
    Oracle学习笔记(10)管理索引1、索引和表的关系:书目录和书的关系。在数据库只有索引和表才能申请空间分配。是独立存在的物理结构。实现数据的唯一性。2、索引:独立于表的指针(物理结构)。指向表数据:rowid。...
  • 各种Oracle索引类型介绍 逻辑上: Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引 物理上: Partitioned 分区索引 NonPartitioned ...
  • Oracle 全文索引

    2021-03-21 18:25:19
    缘由 我们经常需要对表的内容进行模糊查询,在数据量不算很大的情况下,使用起来还是没什么问题,...Oracle的全文索引Oracle9i 开始支持)可能会对你有帮助。 Oracle全文索引的基本知识 一、历史背景 Oracle数据库的
  • Oracle 创建索引,oracle索引怎么创建

    千次阅读 2021-05-08 01:58:43
    Oracle 创建索引,oracle索引怎么创建索引是数据库服务器用来加快检索的速度,再通过加了索引的列进行检索时候,数据库会自动使用索引,使用索引所在的列值进行快速检索,快速定位到真实的数据内容。哪些场合使用...
  • Oracle索引

    千次阅读 2021-05-01 03:35:30
    Oracle索引Oracle索引(index)最大的作用是用来优化数据库查询的效率,提升数据库的查询性能。就好比书的目录一样,可以通过目录来直接定位所需内容存在的页数,大大提高检索效率。Oracle数据库如果某列出现在查询...
  • 1)B树索引(考点):是应用最广泛的索引,也是Oracle数据库的默认索引类型。B树指的是平衡树(Balanced Tree),它是使用平衡算法来管理索引的。 适合B树索引的场合有: 表存储的数据行数很多。 列存储的数据的
  • oracle索引类型及扫描方式大整理new
  • 5、Oracle支持多种类型索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。(请见附件) a. 单列索引和复合索引 b.B树索引(create index时默认的类型) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,747
精华内容 61,898
关键字:

oracle中索引的类型