B*树索引和Bitmap索引
Bitmap索引在索引块中主要存储的是键值和起止ROWID,以及这些键值的位置编码,位置编码中的每一位表示对应数据行的有无,0表示不存在,1表示存在。
这种存在方式相对B*树索引来说存储空间小,访问效率高,存储快。
建立Bitmap索引的条件:多个列选择、键值distinct后值少,Bitmap索引主要应用于OLAP系统中,而OLTP系统由于存在大量的高并发访问,所以不建议使用Bitmap索引,当然如果只用于查询的表,可以考虑Bitmap索引。
Bitmap索引和B*树索引的区别
1、存储区别:B*树索引是根据键值排序储存的,而Bitmap索引不存在排序的情况
2、占用空间的区别:B*树索引相对Bitmap索引来说占用空间较大,同时B*树索引的开销也大,并且维护时间花费较长
3、键值区别:B*树索引键值不允许为null,而Bitmap索引键值允许为Null
4、Bitmap的锁机制,Bitmap索引不同更新相同键值的位图段,dml操作都会发生锁问题,而B*树索引则不会发生锁
5、应用区别:Bitmap索引一般只使用与OLAP系统,而B*树索引不存在这样的情况,在OLAP合OLTP系统中都大量使用
位图存储的原理
Bitmap索引在索引块中主要存储的是键值和起止ROWID,以及这些键值的位置编码,位置编码中的每一位表示对应数据行的有无,0表示不存在,1表示存在。
这种存在方式相对B*树索引来说存储空间小,访问效率高,存储快。
建立Bitmap索引的条件:多个列选择、键值distinct后值少,Bitmap索引主要应用于OLAP系统中,而OLTP系统由于存在大量的高并发访问,所以不建议使用Bitmap索引,当然如果只用于查询的表,可以考虑Bitmap索引。
Bitmap索引和B*树索引的区别
1、存储区别:B*树索引是根据键值排序储存的,而Bitmap索引不存在排序的情况
2、占用空间的区别:B*树索引相对Bitmap索引来说占用空间较大,同时B*树索引的开销也大,并且维护时间花费较长
3、键值区别:B*树索引键值不允许为null,而Bitmap索引键值允许为Null
4、Bitmap的锁机制,Bitmap索引不同更新相同键值的位图段,dml操作都会发生锁问题,而B*树索引则不会发生锁
5、应用区别:Bitmap索引一般只使用与OLAP系统,而B*树索引不存在这样的情况,在OLAP合OLTP系统中都大量使用
位图存储的原理