序列化VS爆(Serialize vs Implode)

2019-07-03 12:34发布

你认为什么是更好的方式去在MySQL数据库中存储的记录内的几个图像的id? 这只是图像的ID将被用于从不同的库获取的图像。

我是否破灭ID用在像1#4#7#9#10#12的纪录还是我只是序列化阵列和存储? 是否有通过使用一个,而不是其他的任何性能优势? 稳定的偏好?

我刚才一直使用内爆和爆炸,从来没有真正赋予它过多考虑。 谢谢。

Answer 1:

我会pefer 序列化或JSON编码。
更加灵活 ,比如可以让你在将来添加图像标题和其他细节有...



Answer 2:

如果你不想(过?)你正常化的表,你真的只想存储ID列表那么我建议使用一个简单的逗号分隔的列表,因为已经MySQL有一些功能,可以直接处理逗号分隔字符串值:

FIND_IN_SET : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

SELECT FIND_IN_SET('b','a,b,c,d'); --> 2

CONCAT_WS : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws

SELECT CONCAT_WS(',','First name',NULL,'Last Name'); --> 'First name,Last Name'

当然,你不能做SQL连接,但它仍然是有帮助的。



Answer 3:

据我知道有没有这种情况,而是显著差异implode()是一个快一点,因为它假设数组和serialize()不知道你是什么传递给它。

基于OP的评论编辑

那么所有的图像存储在标题和描述之类的东西一个单独的库表。 但是,是我明白你的意思。

在这种情况下是不是一个好主意,于是几个序列ID添加到一个字段。 你需要的是你的2个表之间的*一对多的关系。 这是代表多值字段中输入正确的方法:

+----------------------+
|  USER                |
+---------+------+-----+
| user_id | name | ... |
+---------+------+-----+

+----------------------+
|  USER_PICTURE        |
+---------+------------+
| user_id | picture_id |
+---------+------------+

+--------------------------+
|  PICTURE                 |
+------------+-------+-----+
| picture_id | title | ... |
+------------+-------+-----+


Answer 4:

我的朋友,序列化是获取对象的状态的字符串表示。 即使它的工作原理我不认为是你想要的东西的最佳方式。 我宁愿来存储一个JSON对象与IDS。 因为JSON对象是多平台,是一个字符串,是由人,我认为是一个很好的方法易于阅读。



文章来源: Serialize vs Implode