iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle索引创建及管理
  • 402
分享到

Oracle索引创建及管理

2024-04-02 19:04:59 402人浏览 薄情痞子
摘要

Oracle 索引创建及管理       1.      Oracle 索引简介 在 orac

Oracle 索引创建及管理

      1.      Oracle 索引简介

oracle 数据库中,存储的每一行数据都有一个 rowID 来标识。当 Oracle 中存储着大量的数据时,意味着有大量的 rowID ,此时想要快速定位指定的 rowID ,就需要使用索引对象。

当对 Oracle 表执行指定条件的查询时,常规的方法是将所有的记录取出来,然后再把每一条记录与查询条件作对比,最后返回满足条件的记录。这样操作不仅耗费时间并耗费资源。当有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以通过保存在索引中的 rowID 快速找到表中对应的记录。

用户可以根据情况不同创建多种类型的索引。按照索引的存储方式将索引分为 B 树索引、位图索引、反向索引和基于函数的索引。创建索引时需要注意以下几点:

l   索引应该建立在 where 子句频繁引用、排序以及分组的列上,如果选择的列不合适将无法提升查询速度;

l   限制索引的个数。索引只要提升查询速度,但会降低 DML 操作的速度;

l   指定索引块空间的使用参数。基于表建立索引时, Oracle 会将相应表添加到索引块。为索引添加数据时, Oracle 会按照 pctfree 参数在索引块上预留部分空间。如果将来在表上执行大量的 insert 操作,那么应该在建立索引时设置较大的 pctfree ;

l   将表和索引部署到相同的表空间,可以简化表空间的管理;将表和索引部署到不同的表空间,可以提高访问性能( Oracle 能够并行读取不同硬盘的数据);

2.      创建索引

       在创建索引时, Oracle 首先对将要简历索引的字段进行排序,然后将排序后的字段值和对应记录的 rowID 存储在索引段中。查询时,根据索引查询指定条件的 rowID ,再根据 rowID 提取数据行。

1) B 树索引

       B 树索引时 Oracle 最常用的索引类型(也是默认类型),是以 B 树结构组织并存放索引数据。默认情况下 B 树索引中的数据是以升序方式排列的。 B 树索引是由根块、分支块和叶块组成。

       例:为 emp 表的 deptno 列创建索引 index _ test

Create index index _ test on emp ( deptno )

Pctfree 25

Tablespace users ;

       其中,子句 pctfree 指定为将来 insert 操作所预留的空闲空间,子句 tablespace 指定索引段所在的表空间

2) 位图索引

       当需创建索引列包含的取值太少时,如对性别列创建索引,取值只能是“男”或者“女”,使用 B 树索引取出来的值任然太多,失去了索引的意义。这种情况需要使用位数索引,

       例:

Create bitmap index index _ test

On emp ( salary )

Tablespace users ;

       注:初始化参数 create _ bitmap _ area _ size 用于指定建立位图索引时分配的位图区大小,默认值为8 MB ,该参数越大建立位图索引的速度越快。修改该参数语句为:

Alter system set create _ bitmap _ area _ size =8388608

Scope = spfile ;

       修改后需要重新启动数据库方可生效;

3) 反向键索引

       在单调递增的列上使用 B 树索引时,若用户对表中数据做了删除操作,将导致对某一边的叶子节点的大量占用。 Oracle 提供另一种索引机制,及反向键索引,它可以将添加的数据随机分散到索引中。反向键索引是一种特殊的 B 树索引,在顺序递增数列上建立索引非常有用。反向键索引在原理和存储结构方面和 B 树索引类似。当用户插入记录时,将列值进行反向操作后进行索引,此时数据不在是递增的,所以新数据在值的范围上分布通常比原来的有序树更均匀。

       例:

Create index index _ test

On emp ( deptno ) reverse

Tablespace users ;

       如果该列上已经建立了 B 树索引,那么可以将其修改为反向键索引:

Alter index index _ test

Rebulid reverse ;’

4) 基于函数的索引

       用户在使用数据库时,最常遇到的问题是大小写字符敏感。例如在 emp 表中 Job 字段有 MANAGER 的记录,当用户使用小写搜索时则无法找到该记录,只能通过函数 upper 对应进行转换,在使用转换后的数据进行检查。但是这样查询是,即便 job 列有普通索引, Oracle 也会执行全表搜索,并为遇到的各个行计算 upper 函数。这种情况可以使用建立基于函数的索引,通常只是常规 B 树索引,但是它存放的数据是由表中数据应用函数后得到的,而不是直接存放表中的数据本身。

       如果习惯使用小写字符串,可以创建如下索引:

Create index index _ test

On emp ( lower ( job ));

3.      修改索引

       修改索引使用 alter index 完成。

       为表建立索引后,随着对表不断进行更替、插入和删除动作,索引中国会产生越来越多的存储碎片,导致索引工作效率降低。这是可以采取重建索引和合并索引清除碎片。合并索引只是将 B 树中叶子节点的存储碎片合并在一起,并不会改变索引的物流组织结构。

       合并索引:

Alter index index _ test

Coalesce deallocate unused ;

       重建索引:

Alter index index _ test rebuild

Tablespace user 1;

       重建索引时可以更改索引的类型,存储表空间等

4.      删除索引

       删除索引使用 drop index 语句。当索引过于碎片化,或者不经常被用到时,既可以删除索引:

Drop index index _ test ;

       注:删除表是也会删除其相应的索引。

5.      显示索引信息

       为了显示索引的信息, Oracle 提供了一系列数据字典视图,使用户了解索引的各方面信息。

1) 显示表的所有索引:显示 emp 的所有索引

Select * from dba _ indexs where owner =’ EMP ’

2) 显示索引列:显示 index _ test 所使用的索引列:

Select * from user _ ind _ columns where index _ name =’ INDEX _ TEST ’

3) 显示索引位置及大小

Select * from user _ segments where segment _ name =’ INDEX _ TEST ’

4) 显示函数索引

Select * from user _ ind _ expressions where index _ name =’ INDEX _ TEST ’


您可能感兴趣的文档:

--结束END--

本文标题: Oracle索引创建及管理

本文链接: https://www.lsjlt.com/news/45925.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle索引创建及管理
    Oracle 索引创建及管理       1.      Oracle 索引简介 在 Orac...
    99+
    2022-10-18
  • Oracle 中如何创建和管理索引
    这篇文章将为大家详细讲解有关Oracle 中如何创建和管理索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  在 Oracle 数据库中,存储的每一行数据...
    99+
    2022-10-18
  • 【Mongo】MongoDB索引管理-索引的创建、查看、删除
    http://itbilu.com/database/mongo/E1tWQz4_e.html 索引是提高查询查询效率最有效的手段。索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的...
    99+
    2022-10-18
  • MySQL如何管理创建CREATE表和索引
    小编给大家分享一下MySQL如何管理创建CREATE表和索引,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!SQL语句:   数据库   表 ...
    99+
    2022-10-19
  • oracle怎么创建组合索引
    要在Oracle中创建组合索引,您需要使用CREATE INDEX语句,并指定要创建的索引的名称、表名称以及要包含在索引中的列。 以...
    99+
    2023-10-27
    oracle
  • oracle怎么创建本地索引
    在Oracle中,可以使用CREATE INDEX语句来创建本地索引。以下是创建本地索引的基本语法:CREATE INDEX ind...
    99+
    2023-09-29
    oracle
  • Oracle如何创建分区索引
    这篇文章主要介绍了Oracle如何创建分区索引,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 分区索引总结: 一,分区索引分为2类: 1、...
    99+
    2022-10-18
  • oracle位图索引怎么创建
    要创建Oracle位图索引,可以使用以下语法: CREATE BITMAP INDEX index_name ON table_na...
    99+
    2023-10-25
    oracle
  • Oracle 建立索引及SQL优化
    数据库索引: 索引有单列索引复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:  1、索引应该经常建在Where ...
    99+
    2015-01-04
    Oracle 建立索引及SQL优化
  • Oracle中如何创建复合索引
    这期内容当中小编将会给大家带来有关Oracle中如何创建复合索引,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1.对于复合索引,在Wher...
    99+
    2022-10-18
  • MySQL 索引的优缺点以及创建索引的准则
    一、为什么要创建索引呢(优点) 这是因为,创建索引可以大大提高系统的性能。 第一, 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二, 可以大大加快数据的检索速度,这也是创建索引的最主要的原...
    99+
    2022-05-31
    MySQL 索引 MySQL 索引优缺点 MySQL 创建索引的准则
  • mysql创建索引
    mysql创建索引?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!分为五种索引方式:1.添加PRIMARY KEY(主键索引...
    99+
    2022-10-18
  • oracle如何查看索引创建时间
    要查看Oracle数据库中索引的创建时间,可以通过以下步骤进行操作:1. 首先,使用以下命令登录到Oracle数据库的SQL*Plu...
    99+
    2023-08-20
    oracle
  • oracle索引创建的方法是什么
    在Oracle数据库中,可以使用以下几种方法来创建索引:1. CREATE INDEX语句:使用CREATE INDEX语句可以手动...
    99+
    2023-08-28
    oracle
  • Oracle之表空间、索引、管理权限及角色
    Oracle表空间表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中从逻辑上讲,数据库则是存放在表空间中,表空间由一个或多个数据文件组成数据库的逻辑结构oracle中逻辑结构包括表空间、段...
    99+
    2022-10-18
  • MySql索引和索引创建策略
    目录1、B+树索引1.1、聚集索引/聚簇索引1.2、辅助索引/二级索引1.3、联合索引/复合索引1.3.1、什么是复合索引1.3.2、最左原则1.3.3、联合索引的查询优化2、哈希索引2.1、查看哈希索引的命中率等信息3...
    99+
    2022-08-22
  • mongodb中索引分类是怎样的以及如何创建索引
    mongodb中索引分类是怎样的以及如何创建索引,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。学习索引分类和创建索引:   &nbs...
    99+
    2022-10-18
  • Mysql索引创建删除及使用代价
    目录一、Mysql 中索引的创建删除二、索引的代价1. 空间上的代价2. 时间上的代价小结一、Mysql 中索引的创建删除 innodb 和 myisam 引擎会自动为主键或者带有 ...
    99+
    2022-11-13
  • oracle中重建索引
              数据库的索引如果有比较频繁的 Delete 操作, 将可能导致索...
    99+
    2022-10-18
  • ORACLE中怎么获取索引的创建语句
    今天就跟大家聊聊有关ORACLE中怎么获取索引的创建语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。set pagesize 0set long ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作