因此,db中存在一个字段,用于存储序列化数组。
$array = array('count1' => 10, 'count2' => 20, 'count3' => 4);
序列:
a:3:{s:6:"count1";i:10;s:6:"count2";i:20;s:6:"count3";i:4;}
是否可以使用mysql查询来拉取count1 + count2 + count3?我想我正在寻找类似于php爆炸的东西。很确定这不可能做到,但我想我会问。
我需要拉出最高count1 + count2 + count3行并返回总计数。循环遍历每一行并且反序列化将不起作用,因为存在大量的行。
答案 0 :(得分:2)
如果您需要通过SQL访问部分序列化数据,则需要将它们存储在不同的列中。
虽然可以使用正则表达式等技术来访问此字符串中的这三个值,但是当在WHERE标准中使用时,它会非常慢,因为索引将是无用的 - 更不用说它将是一个巨大的混乱,比在编程语言中使用goto
更糟糕。
因此解决方案是创建一个新列,然后遍历所有行,对它们进行反序列化,并将总和存储到新列中。这可能需要一段时间,但你只需要一次。
根据您的应用程序,最好分别创建三列并存储每个值。