郑重声明:由于本人水平有限,如有不对的地方请大神指正不甚感激(327568824@qq.com)
ORACLE中支持三种索引类型,本文内容只涉及三种索引的适用范围,而不涉及具体使用方法,如果需要查看后序文章
B-Tree索引:B-Tree索引
位图索引:位图索引
- B树索引(B-Tree index)
适用范围:1)OLTP系统中2)主键、唯一性约束
3)重复度非常低的字段
不适用范围:重复度非常高的字段
特性:1)执行效率非常高
2)查询时间基本不受数据量的影响
3)如果重复度非常高,使用B-Tree索引还没有全盘扫描效率高 - 位图索引(Bitmap index)
适用范围:1)OLAP系统中
2)主要是重复数据导致的查询性能低的问题,用来弥补B-Tree性能低的问题
3)使用OR\AND这类逻辑操作
不适用范围:大量DML操作、重复率较低的字段
特性:1)适合在索引字段间进行OR\AND这类逻辑运算
2)位图索引占用的空间比BTree索引用的少的多
3)位图索引不适用于大量的DML操作(除select外),因为每个DML操作对应的位图索引键值对应多条数据,修改时键值会被上锁,如果此时其他用户需要更改数据,就会造成阻塞。 - 全文索引(Text index)
适用范围:1)模糊查询
2)数据库空间种族,因为全文索引比较占用空间
3)语言文字范畴
不适用范围:全文索引占用大量的空间,不适合在硬盘资源紧张的库中(原数据的1.5倍)
BUG比较多,维护困难
特性:1)适用于不变的数据,因为DML的新数据,不会在全文索引中包含
2)由于全文索引不是基于事物的,一旦有DML,就需要重新构建这个全文索引:alter index t_idx rebuild parmeters('sync');