Oracle 支持哪些索引类型?
典型回答 Oracle 比MySQL 在索引上的支持更加全面,在数据结构上,主要包括了 B+树索引、位图索引、R 树索引以及 Quad 树索引。 B+树索引(重要) 这个大家都不陌生,在 MySQL 中主要用的就是这个索引。 (很多人说Oracle用的是B树索引,这么说是不对的,虽然Oracle官网也说是B-Tree,但是实际上还是B+树。详见下面这篇文章。) ✅Oracle为什么用B-树索引? 使用B+树实现索引,有以下几个优点: 支持范围查询,B+树在进行范围查找时,只需要从根节点一直遍历到叶子节点,因为数据都存储在叶子节点上,而且叶子节点之间有指针连接,可以很方便地进行范围查找。 支持排序,B+树的叶子节点按照关键字顺序存储,可以快速支持排序操作,提高排序效率; 有利于磁盘预读。由于B+树的节点大小是固定的,因此可以很好地利用磁盘预读特性,一次性读取多个节点到内存中,这样可以减少IO操作次数,提高查询效率。 有利于缓存。B+树的非叶子节点只存储指向子节点的指针,而不存储数据,这样可以使得缓存能够容纳更多的索引数据,从而提高缓存的命中率,加快查询速度。 位图索引(重要) 位图索引使用一系列bit来表示数据记录是否存在。 ✅什么是BitMap?有什么用? bitmap 索引将每个被索引的列的值作为 KEY,使用每个 bit 表示一行,当这行中包含这个值时,设置为 1,否则设置为 0。 如下图: 按照性别来看,编号从0到4分别是 M F F M F ,那么如果 M 作为索引的 key的话,那么他的结果就是 1 0 0 1 0,而 F 的结果结果就是0 1 1 0 1。 位图索引和 B+树索引刚好相反,他比较适合建立在重复度比较高的字段上,比如上面的性别字段,这样只需要两个 bitmap 就可以完成存储了。 同时,位图索引适合于那种变化不频繁的数据,比如上面的性别字段(哈哈哈哈哈。。。。)。而对于经常变化的字段,不适合用位图索引。 在创建索引时,指定CREATE BITMAP INDEX就是创建位图索引了。 1 CREATE BITMAP INDEX index_name ON table_name (column_name); R树索引(了解即可) Oracle 中一个专为存储、管理和检索位置数据设计的高级功能,它支持多种空间数据类型和相关操作,这就是Spatial。 ...