首批通过分布式安全可靠测评,为关键业务系统打造
索引简介
更新时间:2026-04-10 11:58:35
索引是一种可选的结构,用户可以根据自身业务的需求来决定在某些字段创建索引,从而加快在这些字段的查询速度。本文主要介绍使用索引的优点和缺点以及索引的可用性和可见性。
索引的优缺点
索引的优点如下:
用户可以在不修改 SQL 语句的情况下,可以加速查询,只需要扫描用户所需要的部分数据。
索引存储的列数通常较少,可以节省查询 IO。
索引的缺点如下:
选择在什么字段上创建索引需要对业务和数据模型有较深地理解。
当业务发生变化时,需要重新评估以前创建的索引是否满足需求。
写入数据时,需要维护索引表中的数据,消耗一定的性能代价。
索引表会占用内存、磁盘等资源。
索引的可用性和可见性
索引可用性
在 Drop Partition 场景,如果没有指定 rebuild index 字段,会将索引标记为 UNUSABLE,即索引不可用,此时,在 DML 操作中,索引是无须维护的,并且在该索引也会被优化器忽略。
索引可见性
索引的可见性是指优化器是否忽略该索引,如果索引是不可见的,则优化器会忽略该索引,但在 DML 操作中索引是需要维护的。一般在删除索引前,可以先将索引设置成不可见,来观察对业务的影响,如果确认无影响后,再将索引删除。
索引和键的关系
键是指一组列或者表达式,用户可以在键上创建索引。但索引和键是不同的,索引是存储在数据库中的对象,而键是逻辑上的概念。
索引类型
全局索引和局部索引
全局索引
全局索引是在整个表中创建的索引,可以包含表的所有分区的数据。全局索引适用于跨分区进行查询的场景。
局部索引
局部索引是在每个分区中创建的索引,仅包含该分区的数据。局部索引适用于在分区内部进行查询的场景。
唯一索引和非唯一索引
唯一索引
唯一索引要求索引列的值在索引中是唯一的,每个索引值只能对应一条记录。唯一索引用于确保表中某个字段的唯一性。
非唯一索引
非唯一索引允许索引列中存在重复的值,即可以有多个索引值对应一条或多条记录。非唯一索引用于加速对索引列的查询,无法保证索引列的唯一性。
空间索引
空间索引是一种用于加速空间数据的查询的特殊索引类型,主要应用于地理信息系统(GIS)和空间数据处理领域。空间索引可以支持对空间对象(如点、线、面)进行高效的查询和空间关系分析。
函数索引
基于表中一列或多列的值进行计算后的结果建立的索引称为函数索引。函数索引是一种优化技术,使用函数索引可以在查询时快速定位匹配的函数值,从而避免重复计算,提高查询效率。
列存索引
列存索引是将索引表当中的数据以列存形式存储。OceanBase 数据库从 V4.3.0 版本开始支持创建表时指定表的存储格式为列存,索引和数据表一样都是一张表,所以也支持设置索引表中的数据以列存形式存储。
更多有关列存的详细信息,请参见 列存。