本文介紹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索引。