B-Tree 索引是Oracle 默认的索引类型,B 代表 “平衡(balanced)” 是一种树结构
一般使用于列的数据中,不同值的个数很多的情况,比如主键列、身份证号列等(值不相同、值个数多)
位图索引适用场景需满足两个条件:
1、位图索引列大量重复,不同值的个数很少,比如性别列,是否XX列
2、该表极少被更新
因为位图索引更新时,会把所有记录都锁住,其他会话无法对这些数据进行修改,大量的锁对多并发系统来说无法接受
姓名(Name) | 性别(Gender) | 身份证(ID_Card) |
---|---|---|
n1 | 男 | 371… |
n2 | 女 | 372… |
n3 | 女 | 371… |
n4 | 男 | 372… |
n5 | 女 | 372… |
… | … | … |
n10086 | 女 | 372… |
如果在 性别(Gender) 列上建立了 位图索引,对于 性别(Gender) 这个列,针对每行的 rowid(rowid可以理解为每行的物理位置),位图索引形成两个向量:
男:10010, 女:01101
其中 1:表示男,0:表示女。
Rowid | 1 | 2 | 3 | 4 | 5 | … | 10086 |
---|---|---|---|---|---|---|---|
男 | 1 | 0 | 0 | 1 | 0 | … | 0 |
女 | 0 | 1 | 1 | 0 | 1 | … | 1 |
函数索引(Function-Based Indexes,FBI),它基于对表中列进行计算后的结果创建索引。
函数索引在不修改应用程序的逻辑基础上提高了查询性能。如果没有函数索引,那么任何在列上执行了函数的查询都不能使用这个列的索引。当在查询中包含该函数时,数据库才会使用该函数索引。
函数索引可以是一个B-Tree索引或位图索引。
任何对列的操作都可能导致全表扫描,例如:
这时候可以创建函数索引:
注意事项
Update your browser to view this website correctly. Update my browser now