2


0

フォーラムで未読の投稿を含むリストを表示するための効率的な方法は何ですか? ユーザーを追跡し、訪問した各投稿を記録して新しいテーブルに登録することができます。

これはあまり効率的ではないと思います。 これを行うためのより効率的な方法は何ですか?

1 Answer


2


あなたが本当にこれをしたいならば、あなたは以下のようなテーブルを持つことができます

UserVisit:user_id、topic_id、last_visited_at

ユーザーがトピックを開いたときに更新するテーブル。 次に、この表にidが含まれていないトピック、またはlast_visited_atより後に投稿が追加されているトピックを選択できます。 何かのようなもの:

SELECT * FROMトピックWHERE Topic.id NOT IN(SELECT topic_id FROM UserVisit WHERE user_id = $ user_id)

連合

SELECT * FROMから左へ結合UserVisit ON Topic.id = UserVisit.topic_id WHERE user_id = $ user_id AND UserVisit.last_visited_at <Topic.last_post_at

しかし、これに代えて、ユーザーが最後にサイトにアクセスしてから新しい投稿があるトピックのみをユーザーに提示することをお勧めします。 あなたがこれをするならば、あなたはまったくこのテーブルを必要としません、あなたは以下のようにトピックを問い合わせることができます:

SELECT * FROMのトピックWHERE Topic.last_post_at> $ users_last_visit