Php 从mysql中提取序列化数据

Php 从mysql中提取序列化数据,php,mysql,serialization,Php,Mysql,Serialization,因此,数据库中有一个字段,我在其中存储序列化数组 $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的explode。我很确定这不可能,但我想我会问的 我需要提取最高的coun

因此,数据库中有一个字段,我在其中存储序列化数组

$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的explode。我很确定这不可能,但我想我会问的


我需要提取最高的count1+count2+count3行并返回总计数。循环遍历每一行并取消序列化是行不通的,因为有很多行。

如果需要通过SQL访问序列化数据的一部分,则需要将它们存储在单独的列中

虽然可以使用正则表达式之类的技术来访问该字符串中的这三个值,但在WHERE标准中使用时速度会非常慢,因为索引是无用的——更不用说这将是一个巨大的混乱,比在编程语言中使用
goto
糟糕得多

因此,解决方案是创建一个新列,然后遍历所有行,取消序列化,并将总和存储到新列中。这可能需要一段时间,但你只需要做一次


根据应用程序的不同,最好创建三列并分别存储每个值。

我必须创建几个包含50多个字段的新表。我相信使用序列化数据是最好的选择。是否可以按序列化数组的一个元素而不是三个元素的总和对行进行排序?