コメントアプリケーションで作業しています。コメントの返信数やいいね数を追跡するために使用している方法について、フィードバックをお願いします。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
が追加された場合、返信列は1つ増加するか、削除された場合は1つ減少します。
また、コメントをフェッチする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サーバーに与えるストレスについて誇張しているので、代わりにそのような複雑なクエリを使用する必要がありますか?
フィードバックをいただければ幸いです。