首先Bitmap算法并不是一种数学公式,而是一种方法!
下面通过一个列子来使你明白何为Bitmap算法!以下数据库以mysql为列!
给出一个表结构,每一行都表示一条记录!
1、要想统计所有70后的演员怎么做?
Select count(distinct Name) as 用户数 from table where Age=’70后’ and Job=’演员’;
2、要想统计所有Apple手机使用者或者80后的用户总和怎么做?
Select count(distinct Name) as 用户数 from table where Phone=’Apple’ or Age=’80后’;
是不是很简单,几个月后你的数据库越来越长,后面的标签越来越多,导致你sql语句拼接出来是如此的长,而且多个用户求并集的时候用distinct,性能慢的会让人崩溃!
这个时候Bitmap思想就出来了,如果我们可以把一个数据映射到内存的一个bit上,这样对于通过位操作就可以快速的实现大型数据的去重和查询。
举个列子,给出一长度为10bit的内存空间,想要插入整型数据4,3,2,1。
第一步:10bit的所有位数据均为0。