Bitmap索引是指对某个,或者某几个字段建立的bit map(位图映射)。如果是对整个表的记录,也就是表的%ID做位图映射,得到的特殊的bitmap索引在IRIS/Caché里被称为Bitmap Extent。
建立Bitmap Extent索引的目的就是加快COUNT(*)的执行。提高了多少呢? 下面两个显示的是最简单的全表查询花费的时间:
- 不使用Bitmap Extent : 1.3810s
- 使用Bitmap Extent: 0.0038
相差有几百倍。
有关Bitmap Extent你需要了解:
- IRIS中不需要人工创建。当在表中创建了任何一个Bitmap索引, 系统会为这个表自动添加一个Bitmap Extent, 名字是“$类名”, 比如上图中的$ppl1。
- Caché中需要你自己手工添加bitmap Extent, 可以使用SQL或者在类里定义
- 在类里定义:
Index DDLBEIndex [ Extent, SqlName = "%%DDLBEIndex", Type = bitmap ];
- SQL定义
CREATE BITMAPEXTENT INDEX Patient ON TABLE Sample.Patient
- 做为Bitmap的一个特例, 它也有下列限制
- 需要IDKEY为正整数
- 大量的数据删除插入需要定期维护