gpt4 book ai didi

PHP/MySQL : Storing a list or massive table

转载 作者:行者123 更新时间:2023-11-29 01:44:19 25 4
gpt4 key购买 nike

我对 PHP 还是个新手,我想知道哪种替代方案会更好,或者有人可以建议更好的方法。

我有一组用户,我必须跟踪他们与帖子的所有互动。如果用户点击一个按钮,它会将帖子添加到列表中,如果他们再次点击它,它将删除该帖子,所以最好是:

在表中为每个用户(可能有数千个)存储一列 postID 的 JSON 数组。

-或-

每次保存(postID 和 userID 的组合)(可能数百万)都有一个单独的表,并返回与 userID 匹配的所有结果?

为了这个问题的目的,有两个表:表A是用户,表B是帖子。我应该如何存储所有用户保存的帖子?

编辑:抱歉,但我没有提到帖子将有多个用户交互,用户将有多个帖子交互(多对多关系)。我认为这会影响 Bob 的回答。

最佳答案

这是一个有趣的问题!

解决方案实际上取决于您的预期用例。如果每个用户都有一个他们标记的帖子列表,并且这就是您需要的所有信息,那么将这些列为用户表中的一个字段(或者如果您使用的是 nosql 后端,则在他们的 blob 中)将是方便的 -如果这是您的用例,这是一个可行的选择!)。传输时间不会受到影响,因为无论哪种方式,列表的大小都相同,但在此解决方案中,您可能会节省查找时间,因为您只使用一个表,而 dbs 将优化以将这些信息保持在一起。

另一方面,如果您必须能够为给定的帖子查询所有标记它的用户,那么选项二会好得多。在前一种方法中,您必须查询所有用户并查看是否每个人都有帖子。在此选项中,您只需找到所有关系并从那里开始工作。假设您有一个 user 表、一个 post 表和一个带有前两个表的外键的 user_post 表。还有其他方法可以做到这一点,但需要维护多个列表并每次都进行交叉检查,这是一组昂贵的操作并且容易出错。

请注意,后一个选项不应阻塞“数百万”个连接,因为数据库应该针对这种快速读取进行优化。 (专业提示:索引正确的列!)不过,请注意任何数据信息。一个不必要的 for 循环会降低您的性能。

关于PHP/MySQL : Storing a list or massive table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com