设为首页 收藏本站
查看: 1433|回复: 0

[经验分享] [oracle]索引与索引表管理

[复制链接]

尚未签到

发表于 2017-12-10 22:43:24 | 显示全部楼层 |阅读模式
  (一)索引的概念
  索引是一种与表或簇相关的数据库对象,能够为数据的查询提供快捷的存取路径,减少磁盘I/O,提高检索效率。
  索引由索引值及记录相应物理地址的ROWID两个部分构成,并按照索引值有序排列,ROWID可以快速定位到数据库表符合条件的记录。可以这样理解,将索引看作是一本书的目录,索引值即为目录的标题,ROWID即为目录的页码。
DSC0000.png

  (二)索引的更新策略
  随着标准数据的插入、删除、修改,索引表中的信息会自动更新,具体过程:
  l 向表中插入数据时,系统会在索引的叶子节点插入与表对应的索引条目;
  l 删除表中的数据时,系统自动删除相关的索引条目,但是空间并没有回收,也不会分配给新的索引条目使用,只有将整个叶子节点删除,空间才会被回收;
  l 修改索引表中的数据时,系统会删除索引叶子节点的条目,然后重新分配索引条目
  从更新策略可知,索引并不是创建的越多越好。索引在提高查询效率的同时,会降低数据插入、删除、更新的效率。Oracle建议将索引与表分散在不同的表空间中,最好分散在不同的磁盘上,以提高效率。
  (三)索引结构
  数据库有2种索引结构:平衡树索引结构(B_Tree)和位图索引结构(Bitmap)。
  (1) 平衡树索引结构
  整个索引结构由根节点、分支节点、叶子节点三部分构成,其中分支节点可以有多层。根节点的信息指向下一层分支节点,最底层的分值节点指向叶子节点,叶子节点保存索引条目信息。索引条目信息由4部分构成:索引基于的列信息(Index entry header)、索引列的长度(key column length)、索引值(key column value)及索引对应的ROWID。B_Tree索引占用空间多,适合索引取值范围广(基数大)、重复率低的应用。
DSC0001.png

  图.平衡树索引结构图
  (2)位图索引结构
  位图结构也是按平衡树组织的,但是在叶子节点每个索引值对应一个位图而不是一个ROWID,一个位图里面可以包含一个或多个ROWID,位元到ROWID的映射是通过索引中的映射函数实现的。位图索引适合于取值范围小,待索引数据重复率高的列。
DSC0002.png

  图.位图索引结构
  (四)创建索引
  可以使用create index创建索引:
  

CREATE [UNIQUE][BITMAP] INDEX [schema.]index_name  

ON [schema.]table_name(index_expr[ASC | DESC][,...])  

[PCTFREE integer] [PCTUSED integer] [INITRANS integer]  
[STORAGE(storage_clause)]
  
[LOGGING][NOLOGGING]
  
[ONLINE]
  
[TABLESPACE tablespace_name]
  
[NOCOMPRESS | [ COMPRESS integer] ]
  
[SORT|NOSORT]
  
[REVERSE]
  
[NOPARALLEL |[ PARALLEL integer]]
  

  解释:

UNIQUE:创建唯一性索引,默认非唯一性

BITMAP:创建位图索引,默认B_Tree索引

用于指定索引值的排列顺序,ASC为升序,DESC为降序

PCTFREE | PCTUSED | INITRANS设置数据块的使用

STORAGE:设置索引的存储方式,若不指定,则继承表空间的存储参数设置

LOGGING | NOLOGGING:指明索引创建过程是否写入重做日志文件,默认写入

ONLINE:允许在创建索引或重建索引时执行DML(insert/update/delete等需要commit的语句)语句,但不允许执行DDL(create/alter/drop等不需要commit的语句)操作

TABLESPACE:指明存储索引的表空间

CMPRESS | NOCOMPRESS:是否压缩索引中的重复数据,默认不压缩

SORT | NOSORT:在默认情况下,创建索引时会首先对表中数据进行排序,假如我们的数据已经排好序了,我们可以选择NOSORT,加快索引创建的速度;

REVERSE:创建反序索引

NOPARALLEL | PARALLEL:指明是否允许并行创建索引,默认值为NOPARALLEL
  【未完待续。。。】

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-422813-1-1.html 上篇帖子: windows安装oracle遇INS 30131 错误 下篇帖子: Oracle获取最近执行的SQL语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表