将数组保存在mysql字段中并在该字段中搜索

时间:2013-04-22 09:50:58

标签: php mysql sql arrays dynamic

我有一个看起来像这样的mysql表:

id
some_field1
some_field2
variable_fields
datetime
...

现在我想在variable_fields中存储多个值,如下所示:

user_id:5;message_id:10

我没有为每个要存储的值创建单独字段的原因是这些值在整个项目中有所不同。所以我在项目中存储不同的值。 有时variable_fields包含此值:

user_id:5;message_id:10

在其他时间它包含这个值:

car_id:56;payment_id:45

这不是一个大问题,但我希望能够在这个领域进行搜索。类似于:variable_fields LIKE '%payment_id:45%'.

这明显需要时间用于mysql ..是否有另一种方法来处理这个而不是为每个值创建一个字段?那么mysql中的某种动态字段?

我为各种帮助感到高兴。提前谢谢!

致以最诚挚的问候,

弗雷迪

1 个答案:

答案 0 :(得分:0)

如果您要添加myisam全文索引或在该列上使用任何其他全文工具(例如sphinx,lucene),那么您所描述的搜索将会更好,但这是不可取的。

我建议将每个案例的动态元数据划分为不同的表,并在主表中保留type_id,或者保留默认情况下设置为NULL的所有选项的列。真的取决于是否有一个简单的划分,或者这真的是动态的,随着时间的推移而变化。如果您将数据分成几个表,则根据type_id的JOIN将能够根据这些特定字段值进行查询。一定要在共同id上的两个表中创建一个索引。