本文介绍Bitmap index以及相关适用场景。
背景说明
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索引。