PolarDB MySQL版支持在分区表上创建部分索引(Partial Index),即索引可以只创建在分区表的某一个或多个分区上,而不需要在所有分区上同时创建索引。您可以在各个分区上创建不同的索引,以满足对不同分区的查询要求,同时可以节省大量的存储空间。
适用场景
使用订单表或日志表等业务场景
对于在使用订单表或日志表等业务场景下创建的分区表,通常会选择按照时间进行RANGE分区,但一般只对最新的一到两个分区进行频繁的查询,从需求角度来讲,仅在查询频繁的分区上创建对应的二级索引即可,但原生的MySQL等数据库只支持在所有的分区上创建相同的索引,虽然满足了热点分区的查询需求,但浪费了在分区上创建二级索引的空间。
针对以上场景,您可以在分区表上创建部分索引,即只在热点分区上创建所需要的二级索引,既满足热点分区的查询需求,同时也节省了本来需要在所有分区上创建二级索引的空间。
对历史数据进行查询和分析的场景
需要对历史数据进行查询和分析的场景,通常会选择按照时间进行RANGE分区。对于新创建的分区,需要快速的插入数据并进行简单的查询,而进行数据分析的大查询几乎都在历史分区上,为了满足对于历史分区的查询分析需求,需要创建多个二级索引。但分区上的索引越多,数据写入速度会越慢。
针对以上场景,您可以在分区表上创建部分索引,即在热点分区上创建简单查询的二级索引,在历史分区上创建分析类查询的二级索引。
根据不同的业务需求在分区上创建不同的索引,不仅保证了热点分区的插入性能,同时满足了在历史分区上的查询分析需求。除此之外,最大限度的节省了在所有分区上创建二级索引占用的空间。
前提条件
集群版本需为PolarDB MySQL版8.0.2版本且修订版本为8.0.2.2.21及以上。您可以通过查询版本号来确认集群版本。
使用限制
不支持在主键上创建部分索引。
不支持将全局二级索引(GSI)创建为部分索引,但是,您可以在一个分区表上同时创建全局二级索引和部分索引。
不支持将FULLTEXT类型和SPATIAL类型的索引创建为部分索引。
优化器选择索引时,只选择需要访问的分区表上已有的索引。
使用说明
您可以根据实际需要在分区表上创建部分索引,索引创建成功后,您可以修改部分索引。
在分区表上创建部分索引的功能处于灰度发布阶段,如需使用,请添加钉钉群进行咨询。钉钉群号:24490017825。