【发布时间】:2016-02-22 15:09:54
【问题描述】:
例如,在 Oracle 11g 中,我有一个表 Task,其中有一列 ProcessState。该列的值可以是Queued、Running 和Complete(将来可以有更多的状态)。该表将包含 50M+ 数据,其中 99.9% 的行具有 Complete 作为该列值。只有几千行的值为Queued/Running。
我读到虽然bitmap 索引适用于低基数列,但主要用于静态表。
那么,什么索引可以改善Queued/Running任务的查询呢? bitmap 还是普通的非唯一 b-tree 索引?
此外,什么索引可以改进对二进制列的查询(NUMBER(1,0) 仅具有 yes/no 值)?
免责声明:我是一名偶然的 dba。
【问题讨论】:
-
在您的情况下,“位图索引”更可取。您说“...99.9% 的行具有 Complete...”,如果您仅从一个会话更新 Task.ProcessState,您将不会对性能产生影响,否则会话将不得不序列化它对索引的访问。
-
您要改进的查询是什么?
-
@a_horse_with_no_name 像这样:
select task_id from task where processstate=0(预计只有
标签: database oracle oracle11g database-administration database-indexes