Oracle索引

编辑

本词条缺少信息栏名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
在oracle索引是一种供服务器在表中快速查找一个行的数据库结构。合理使用索引能够大大提高数据库的运行效率。

目录

  1. 1 概念及作用
  2. 2 索引的分类
  1. 3 索引使用原则
  2. 4 Oracle创建索引语法
  1. 5 语法分析

概念及作用

编辑

在oracle中,索引是一种供服务器在表中快速查找一个行的数据库结构。在数据库中建立索引主要有以下作用。
  (1)快速存取数据。
  (2)既可以改善数据库性能,又可以保证列值的唯一性。
  (3)实现表与表之间的参照完整性
  (4)在使用orderby、groupby子句进行数据检索时,利用索引可以减少排序和分组的时间。

索引的分类

编辑

在关系数据库中,每一行都由一个行唯一标识RowID。RowID包括该行所在的文件、在文件中的块数和块中的行号。索引中包含一个索引条目,每一个索引条目都有一个键值和一个RowID,其中键值可以是一列或者多列的组合。
  (一)索引按存储方法分类,可以分为2类:B*树索引和位图索引。
  (1)B*树索引的存储结构类似书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页。Oracle用B*树机制存储索引条目,以保证用最短路径访问键值。默认情况下大多使用B*树索引,该索引就是通常所见的唯一索引、逆序索引。
  (2)位图索引存储主要用于节省空间,减少oracle对数据块的访问。它采用位图偏移方式来与表的行ID号对应,采用位图索引一般是重复值太多的表字段。位图索引之所以在实际密集型OLTP(联机事物处理)中用的比较少,是因为OLTP会对表进行大量的删除、修改、新建操作。Oracle每次进行操作都会对要操作的数据块加锁。以防止多人操作容易产生的数据库锁等待甚至死锁现象。在OLAP(联机分析处理)中应用位图有优势,因为OLAP中大部分是对数据库的查询操作,而且一般采用数据仓库技术,所以大量数据采用位图索引节省空间比较明显。当创建表的命令中包含有唯一性关键字时,不能创建位图索引,创建全局分区索引时也不能用位图索引。
  (二)索引按功能和索引对象分还有以下类型。
  (1)唯一索引意味着不会有两行记录相同的索引键值。唯一索引表中的记录没有RowID,不能再对其建立其他索引。在oracle10g中,要建立唯一索引,必须在表中设置主关键字,建立了唯一索引的表只按照该唯一索引结构排序。
  (2)非唯一索引不对索引列的值进行唯一性限制。
  (3)分区索引是指索引可以分散地存在于多个不同的表空间中,其优点是可以提高数据查询的效率。
  (4)未排序索引也称为正向索引。Oracle10g数据库中的行是按升序排序的,创建索引时不必指定对其排序而使用默认的顺序。
  (5)逆序索引也称反向索引。该索引同样保持列按顺序排列,但是颠倒已索引的每列的字节。
  (6)基于函数的索引是指索引中的一列或者多列是一个函数或者表达式,索引根据函数或表达式计算索引列的值。可以将基于函数的索引建立创建成位图索引。
  另外,按照索引所包含的列数可以把索引分为单列索引和复合索引。索引列只有一列的索引为单列索引,对多列同时索引称为复合索引。

索引使用原则

编辑

在正确使用索引的前提下,索引可以提高检索相应的表的速度。当用户考虑在表中使用索引时,应遵循下列一些基本原则。
  (1)在表中插入数据后创建索引。在表中插入数据后,创建索引效率将更高。如果在装载数据之前创建索引,那么插入每行时oracle都必须更改索引。
  (2)索引正确的表和列。如果经常检索包含大量数据的表中小于15%的行,就需要创建索引。为了改善多个表的相互关系,常常使用索引列进行关系连接。
  (3)主键和唯一关键字所在的列自动具有索引,但应该在与之关联的表中的外部关键字所在的列上创建索引。
  (4)合理安排索引列。在createindex语句中,列的排序会影响查询的性能,通常将最常用的列放在前面。创建一个索引来提高多列的查询效率时,应该清楚地了解这个多列的索引对什么列的存取有效,对什么列的存取无效。
  例如:在A,B,C三列上创建索引
  A有效
  AB有效
  ABC有效
  (5)限制表中索引的数量。尽管表可以有任意数量的索引,可是索引越多,在修改表中的数据时对索引做出相应更改的工作量也越大,效率也就越低。同样,目前不用的索引应该及时删除。
  (6)指定索引数据块空间的使用。创建索引时,索引的数据块是用表中现存的值填充的,直到达到PCTFREE为止。如果打算将许多行插入到被索引的表中,PCTFREE就应设置得大一点,不能给索引指定PCTUSED。
  (7)根据索引大小设置存储参数。创建索引之前应先估计索引的大小,以便更好地促进规划和管理磁盘空间。单个索引项的最大值大约是数据块大小的一半。

Oracle创建索引语法

编辑

Create[UNIQUE|BITMAP]index
  [schema.]index_nameon[schema.]table_name(column_name[ASC|DESC],…n,[column_expression])|CLUSTER[schema.]cluster_name
  [INITRANSinteger]
  [MAXTRANSinteger]
  [PCTFREEinteger]
  [PCTUESDinteger]
  [TABLESPACEtablespace_name]
  [STORAGEstorage_clause]
  [NOSORT]
  [REVERSE]

语法分析

编辑

UNIQUE指定索引所基于的列(或多列)值必须唯一。默认的索引是非唯一的。
BITMAP指定建立位映射索引而不是B*索引。位映射索引保存的行标识符与作为位映射的键值有关。位映射中的每一位都对应于一个可能的行标识符,位设置意味着具有对应行标识符的行包含该键值。
ONtable_name建立基于函数的索引。用table_name的列、常数、SQL函数和自定义函数创建的表达式。指定column_expression,以后用基于函数的索引查询时,必须保证查询该column_expression不为空。
CLUSTER创建cluster_name簇索引。若表不用schema限制,oracle假设簇包含在你自己的方案中。不能为散列簇创建簇索引。
NOSORT数据库中的行以升序保存,在创建索引时不必对行排序。若索引列或多列的行不以升序保存,oracle会返回错误。
REVERSE指定以反序索引块的字节,不包含行标识符。NOSORT不能与REVERSE一起指定。

转载于:https://www.cnblogs.com/ailsalin/p/6528010.html

索引(转载自百度百科)相关推荐

  1. C语言typedef小结1(转载自百度百科)

    声明:此信息是转载自百度百科中  http://baike.baidu.com/view/1283800.htm 的信息 typedef小结 1.使用typedef为现有类型创建同义字,定义易于记忆的 ...

  2. BootLoader是什么 转载至百度百科

    此处为私人收藏文章,建议大家观看百度百科原文:https://baike.baidu.com/item/BootLoader/8733520?fr=aladdin BootLoader 锁定 本词条由 ...

  3. 张宏江:工程水平决定创新能力(转载于百度百科)

    张宏江:工程水平决定创新能力 在研究环境里,无所谓成功和失败,而做工程.做产品,最后只有一个衡量--这个产品最后在市场上能不能卖出去? 中国企业拥有世界上最强大的低成本制造体系,拥有最有潜力的广阔市场 ...

  4. 网址之家【转载自百度百科】

    为了更好的满足广大上网用户的需求,wzzj.net PC产品于2011年开始进行整体内容化改版,对不同用户人群进行个性化推荐.至今,wzzj.net首页已经进行多次内容化改版尝试,并取得巨大成功.左侧 ...

  5. EQ笔记1-什么叫均衡器-百度百科 转载

    要做均衡器,首先要知道它的原理.简单点说,就是将音频的频段提取出来,然后对其中的某一个或者某几个频段进行增大或者减弱的修改. 下面转载于百度百科. eq 均衡器定义 EQ 是Equalizer 的缩写 ...

  6. 转载百度百科 python

    Python (计算机程序设计语言) 编辑 讨论 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添 ...

  7. 转载——glPushMatrix(百度百科)

    百度百科上的这篇文章挺不错的,转载一下.总比那些复制API手册骗阅读量的专家写的好. 原文链接:http://baike.baidu.com/link?url=wpgJBI-yzS2cUe6hpMD- ...

  8. 仿写百度百科的目录树

    一.首先来看一下需求(截图为百度百科"医保"词条): 1.点击右侧的目录树,左侧跳转到指定的锚点位置: 2.滚动鼠标,游标跟随一起滚动至响应链接位置 二.实现思路 1.针对第一个需 ...

  9. 【ibokan】SEO个人笔记+百度百科详细介绍

    SEO优化排名靠前2个最重要问题 1.锚文本 当a标签文本子啊psd图当中已经书写好静态文字{即 给前段工程师的文字时确定的} 我们要去尝试书写title 对于img要添加的链接标签  一定要书写标签 ...

最新文章

  1. 用JSP+JDBC开发Web程序
  2. 曾被无视多年,却成就19世纪最伟大的一场革命,影响了整个世界!
  3. MacOS中安装python-jekins失败解决方法
  4. Linux中常用到的命令
  5. delphi virtual dynamic
  6. ThinkPHP+AJAX三级联动
  7. linux系统root默认密码是多少钱,linux root默认密码忘记后的解决方法
  8. java远程调试挂起线程_java进程的远程调试
  9. 【Kafka】Kafka topic 的消费组 出现 CURRENT_OFFSET 为 unknown
  10. 如何安装boost库
  11. 试用 P、V操作描述下列理发师和顾客之间的同步问题
  12. setInterval和setTImeout中的this指向问题
  13. R 回归 虚拟变量na_互助问答第92期:虚拟变量问题
  14. 等保备案和通信网络单元定级备案的五大区别讲解
  15. 中国有哪些优秀的民谣音乐人?
  16. iTunes只能装C盘吗_为什么电脑软件喜欢默认安装在C盘呢?
  17. Linux下Oracle 11G r2 (64位)安装
  18. optuna-自动化调参利器
  19. 复旦大学计算机研究生初试分数线,复旦大学计算机研究生复试分数线
  20. pythonmath库round计算_Python tensorflow.math.round()用法及代码示例

热门文章

  1. router vue 动态改变url_2020年 vue常见面试问题总结(干货)!
  2. js百度地图android定位不准,百度地图js定位不准
  3. rodbc 连接oracle,R語言 使用RODBC連接oracle數據庫
  4. java mvc数据库 封装_关于SpringMvc参数封装_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
  5. mysql自增字段_MySQL自增字段的常用语句
  6. python tkinter text改变文本字体颜色_如何更改Tkinter中文本的颜色?
  7. java map removeall_Java删除Map中元素
  8. android 已经给权限读取照片 还是提示无法读取照片_iPhone无法访问照片,一招教你解决...
  9. 18年高考云南628分想学计算机,2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档...
  10. linux 开放5222端口,ejabberd 安装配置