Oracle 比MySQL 在索引上的支持更加全面,在数据结构上,主要包括了 B+树索引、位图索引、R 树索引以及 Quad 树索引。
这个大家都不陌生,在 MySQL 中主要用的就是这个索引。
使用B+树实现索引,有以下几个优点:
位图索引使用一系列bit来表示数据记录是否存在。
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就是创建位图索引了。
CREATE BITMAP INDEX index_name ON table_name (column_name);
Oracle 中一个专为存储、管理和检索位置数据设计的高级功能,它支持多种空间数据类型和相关操作,这就是Spatial。
Oracle Spatial使用R树索引来加速对空间数据的查询,特别是涉及空间位置和区域的查询。这种索引允许数据库有效地搜索大量空间对象,找到那些与指定空间区域相交或包含在内的对象。
因为R树非常适合于那些需要处理和分析地理空间数据的应用,如地图服务、位置搜索、城市规划和资源管理等领域。通过使用R树索引,Oracle能够提供强大的空间分析功能,支持复杂的空间查询,如距离计算、区域重叠和路径查找等。

在Oracle Spatial中,创建R树索引的基本命令如下:
CREATE INDEX index_name ON table_name(column_name)
INDEXTYPE IS MDSYS.SPATIAL_INDEX
PARAMETERS ('sdo_indx_dims=2');
Quad 树索引就是四叉树索引,在Oracle Spatial中,四叉树被用来优化大规模空间数据集的存储和查询,特别是那些需要频繁访问和更新的应用场景。例如,它可以用于快速定位地理信息系统(GIS)中的点、线和多边形数据。
