我正在寻找处理此问题的最佳方式。
您是否会在论坛表格中创建名为例如num_posts
和num_topics
的列以及主题表中的num_posts
或使用查询来计算主题和帖子的数量?与users表中的num_posts
列相同。还有其他一切,比如在特定的论坛和主题等中获取最后的海报和日期。
我可以看到它的坏处是我必须在用户删除帖子/主题时更新它们。就像他们删除帖子一样,我必须将论坛中的last_post列更新为上一篇文章的发布日期,更新主题,更新用户,制作queires,我不必这样做。但表现如何?
什么是最佳做法?
答案 0 :(得分:0)
两者都有效。
这里没有最佳实践,这主要取决于表的设置和索引方式,RDBMS的反应方式以及数据库负载的大小。
如果索引正确,每次查询表格以获取这些数量的帖子或主题不应该大大减慢整个加载过程。现代RDBMS会将这些查询放入查询缓存中(如果已配置),因此这样可以加快速度。
然而,我知道一些论坛引擎(如phpbb)实际上已经如你所描述的那样在表格中有这些数字。据我所知,他们已经做到了不要过分依赖数据库(不同的RDBMS反应不同)。所以这样做并没有错。
我个人的偏好是让数据库完成工作,并避免编码开销函数,以便尽可能长时间地更新这些字段。