我在一个评论应用程序中工作,我想要一些关于我用来跟踪评论的回复或喜欢数量的方法的反馈。评论和回复存储在同一个表中,为了确定评论是否是回复,如果评论不是回复,我使用该parent_id
字段0
。
请注意,我不会包括下表的所有列:
cid | parent_id | replies | likes
-----+-----------+---------+-------
2 | 0 | 3 | 0
3 | 2 | 0 | 0
4 | 2 | 0 | 2
5 | 2 | 0 | 0
在上表中,带有 id (cid)[3,4,5]
的评论是对评论的回复#2
。列replies
和likes
是整数,相应地保存回复和喜欢的计数。这些列的完整性和准确性通过 PHP 代码进行维护和更新,例如,如果#2
添加了另一个评论回复,则回复列将增加一或如果删除则减少一。
我也知道我可以动态计算获取评论的 SQL 查询中的回复计数,但我认为这会给 SQL 服务器增加更多压力。这个查询看起来像这样:
SELECT cid, parent_id, (
SELECT count(*)
FROM comments as SC
WHERE RC.parent_id = C.cid
) AS replies
FROM comments AS C
WHERE thread = {thread_id}
通过将回复和喜欢存储在表格的实际列中,我做得对吗?或者我是否夸大了上述查询在 MySql 服务器中的压力,而我应该使用这种复杂的查询?
任何反馈将不胜感激,谢谢