背景说明

Bitmap index是Oracle中的一种特殊索引,适用于low-cardinality字段,可以提高查询速度。由于锁粒度较大,不适合于频繁更新的字段。

对于low-cardinality字段,在PolarDB-O中也可以创建Btree索引,创建Btree索引不但能提高查找速度,而且不会出现由于Oracle中大量锁行造成性能下降的问题。

解决方案

根据字段数据评估字段是否为low-cardinality,如果选择性较好而且业务SQL中有这个条件的查询语句,建议创建Btree索引。如果选择性不好,首先评估是否需要创建索引。

示例

  • 示例一

    A表的name列选择性较好,在Oracle中有Bitmap index,迁移到PolarDB-O后可以创建Btree索引。

  • 示例二

    A表的status列选择性不好,90%的值为1,10%的值为0,业务上的查询都条件是status=1,这种情况下可以考虑不创建索引。如果业务上有status=0的查询,建议创建Btree索引。