有 3 个实体-articles和。对如何在数据库中存储数据没有任何限制。同一篇文章可以同时在多个期刊上发表。journalssubscribers
如何从订阅期刊中选择所有已发表的文章,按发表日期排序且不重复?
最简单的方法:
创建一个包含文章的表格: posts
p_id,j1_id,j2_id,text,date创建一个带有订阅的表: follows
f_id,u_id,j_id(u_id — 是来自表users的用户 id )执行:
示例查询
select posts.* from posts inner join follows on (j_id = j1_id or j_id
= j2_id) where u_id = 1 order by date desc
此查询返回具有重复项的数据。您可以使用机制DISTINCT或GROUP BY,但它会创建一个额外的排序操作来删除重复项。
另一种方法可以使用机制来完成UNION,但它也使用DISTINCT.
(select posts.* from posts inner join follows on j_id = j1_id where u_id = 1)
union
(select posts.* from posts inner join follows on j_id = j2_id where u_id = 1)
order by date desc
也许我以自己的方式选择了不正确的存储结构。
实际上的问题是,是否有可能对这个问题做点什么,以尽量减少大数据所需的时间?