数据库基础之位图索引

 

位图索引用0,1来标示某条记录某个枚举字段属性的值,在多搜索码检索中,通过求与方式,达到快速定位的目的。

比方有表User

id

name

sex

education(学历)

 

记录

1,tom,m,初中

2,jack,f,大学

3,john,m,初中

4,robin,f,大学

5,rose,m,高中

 

假如sex有值:m,f

education有值:初中,高中,大学

 

对于查询sql

select *from user where sex='m' and education='初中'

 

我们建立针对sex和education的位图索引

对sex

m:10101(按每条记录来,如果该记录sex=m,则为1)

f:01010(和m正好相反)

对education(同上)

初中:10100

高中:00001

大学:01010

 

那么对于上面的查询,我们只要把m的位图值和初中的位图值,做一个简单与操作,

10101

10100

=10100

就可以知道第1和3条记录是满足检索条件的

 

小结

1、位图能达到最大优点是占用空间小,执行速度快

空间=记录总数N*Count(枚举值)个bit位

2、位图方式对于字段是枚举类型,且有多个这样字段的组合等于查询场景比较适合

 

 

 

 

 

你可能感兴趣的:(数据库 索引 位图)