【问题标题】:MySQL - Storing Array and doing a Search based on valueMySQL - 存储数组并根据值进行搜索
【发布时间】:2015-04-10 01:07:32
【问题描述】:

我有一个活动提要模块,我在其中存储在拥有多个成员的公司中发生的活动。活动通常根据用户的角色特定于用户。因此,我想将应该向其显示活动的用户存储在表列中,以便在获取活动时我不必查询与该活动关联的用户,这会减慢数据检索过程。

由于 MySQL 没有数组数据类型,这是最好的方法吗?

我现在有

activities(id, category, action, date)
activity_users(id, activity_id, user_id)

这样更容易查询基于特定用户类型的活动,添加列users 和故事数组[1,3,5,8] 并尝试从activities 表中查询

【问题讨论】:

    标签: mysql arrays sqldatatypes


    【解决方案1】:

    是的,您可以使用 serialize() / unserialize() 但您不能在该字段上触发查询,如果需要从该序列化数据中获取任何特定内容(您必须获取所有,反序列化然后可以执行搜索)或者您可以保存数据逗号分隔(您可以对其执行任何查询)或者您可以获得每个数据的单独字段

    【讨论】:

    • 我可以查询逗号分隔的商店吗?就像一个搜索查询?还是有另一个表本身有意义?
    • 您可以使用 find_in_set mysql 函数来处理逗号分隔的字段
    【解决方案2】:

    如果您的代码在<?php 中,您可以使用json_encode()/json_decode()serialize()/unserialize() 并照常写入字符串。但是很难为选择这种数据建立正确的条件。如果你需要找到一些东西,请使用%LIKE% - 并不总是有帮助。我建议您为每种数据创建单独的字段。

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2012-04-01
      相关资源
      最近更新 更多