Php 针对特定于用户的活动提要的优化MySQL设计

Php 针对特定于用户的活动提要的优化MySQL设计,php,mysql,android-activity,feed,Php,Mysql,Android Activity,Feed,我正在建立一个网站,它可以构建站点范围和用户特定的活动提要。我希望您能看到下面的结构,并与您分享我的解决方案是否有效的见解。这是复杂的,因为我有多种类型的用户,而这些用户现在并没有存储在一个主表中。这是因为用户的类型非常不同,我认为为用户元数据构建多个不同的表太麻烦了。此外,可以对多种类型的内容和多种类型的活动(跟踪、提交、评论等)采取行动 构建站点范围的活动提要很简单,因为所有内容都记录到主提要表中,而我只是构建了一个列表。我在MySQL中有一个主提要表,它包含简单的日志: 活动类型; 目标实

我正在建立一个网站,它可以构建站点范围和用户特定的活动提要。我希望您能看到下面的结构,并与您分享我的解决方案是否有效的见解。这是复杂的,因为我有多种类型的用户,而这些用户现在并没有存储在一个主表中。这是因为用户的类型非常不同,我认为为用户元数据构建多个不同的表太麻烦了。此外,可以对多种类型的内容和多种类型的活动(跟踪、提交、评论等)采取行动

构建站点范围的活动提要很简单,因为所有内容都记录到主提要表中,而我只是构建了一个列表。我在MySQL中有一个主提要表,它包含简单的日志:

  • 活动类型;
  • 目标实体的类型;
  • 目标实体的id;
  • 源实体的类型(即用户或组织);
  • 源实体的id。 (这只是一个大的引用表,它将生成提要的脚本指向每个提要条目的相应表)

    在生成特定于用户的提要时,我试图找出某种方法将关系表与提要表连接起来,并使用它来解析结果。我有一个关系表,由“以下”关系组成,类似于提要表。虽然b/c只允许一种类型的用户跟随其他内容类型/用户,但它更简单

  • 用户/源id;
  • 目标实体的类型;
  • 目标实体的id。 feed和follow表中的第2列和第3列是相同的,我一直在尝试使用各种连接方法来匹配它们,然后通过follow表中用户拥有的任何关系来限制它们。这不是很成功

    我使用的基本查询是:

     SELECT *
     FROM (`feed` as fe) LEFT OUTER JOIN `follow` as fo
                         ON `fe`.`feed_target_type` = `fo`.`follow_e_type`
                            AND fo.follow_e_id = fe.feed_target_id
     WHERE `fo`.`follow_u_id` = 1 OR fe.feed_e_id = 1
           AND fe.feed_e_type = 'user'
     ORDER BY `fe`.`feed_timestamp` desc LIMIT 10
    
    此查询还尝试获取用户创建的任何内容(数据记录在提要表中),实际上,默认情况下用户遵循这些内容


    这个查询似乎有效,但我花了一些时间才找到它,我很确定我错过了一个更优雅的解决方案。有什么想法吗?

    我用活动提要创建的第一个站点有一个记录活动的通知表,然后从中提取好友操作。然而,在接下来的几个月里,它创下了数百万条记录

    我正在编程的解决方案现在从单独的表中提取最新的“朋友”活动,然后按日期排序。查询在家中,如果感兴趣,可以稍后发布示例吗