mysql位操作性能

时间:2014-10-08 09:35:27

标签: mysql performance bit

&我需要相互比较looooong位序列(最多1000位),目前我有一个16列的表(16 * 64 = 1024):

userid       block_1      block_2       block_3      ...
     1       1001...      1100...       0010...
     2       1101...      1011...       0111...
     3       1011...      0111...       1100...

我的陈述:

select sh.userid,
    sum(bit_count(se.block_1 & sh.block_1)+bit_count(se.block_2 & sh.block_2)+...)
    from my_table se, my_table sh
    where se.userid = 1
    and se.userId != sh.userId 
    group by sh.userId

大约有500万个条目,查询时间约为1.5秒,我猜这已经很不错了。 bit_count-和& -part大部分时间都丢失了,因此我问自己是否还有一些改进空间。

有没有更好的方法来比较很长的二进制序列?

修改

我希望se.block_X包含比sh.block_X多得多的0;如果我这样做会有所作为

se.block_X & sh.block_X
or
sh.block_X & se.block_X

?我希望第一个更快。

10在很多类别中代表yesno,我只对两个条目所说的yes感兴趣。所以

10101011100101011
        &
10010101101001010
=================
10000001100001010

现在我现在两个人都说是的。对于我的用例,我必须比较,例如我的答案中有大约500万条其他答案的答案,而且大约有1000个问题。所以我有一个包含500万个条目的表,每个条目都有16x64位列。然后我必须将其中一个条目与其他所有条目进行比较。

0 个答案:

没有答案