1

基本的に、すべての友達の最近の投稿のライブフィード。

ばかげた種類のアプローチでは、次のようなクエリを作成することから始めると思います。

SELECT * FROM tblposts WHERE userid=friend_id_1friend_id_2など OR userid=_......

ここで、friend_id_%は、友達リストにある友達のユーザーIDです。しかし、これは非常に非効率的な方法であるに違いありませんね。MySQLでこれを行うより速い方法はありますか?多分いくつかの賢いDBスキーマ?

(私はFBがHadoobを使用していることを知っていますが、私はそこまで行くのに十分な経験がありません:()

4

2 に答える 2

2

クエリするIDのリストがある場合は、INを使用する必要があります。

SELECT * FROM tblposts WHERE userid IN (friend_id_1, friend_id_2, ...)

ただし、この場合は、代わりに結合を使用できると思います。

SELECT * FROM tblposts AS T1
JOIN (
   SELECT friendid             -- I just made up this query.
   FROM friends                -- You need to replace it with the
   WHERE userid = 'youruserid' -- real query to get someone's friends.
) AS T2
ON T1.userid = T2.friendid
于 2010-03-28T21:46:11.163 に答える
0

ぶつかって申し訳ありませんが、上記のクエリは、friendsテーブルに冗長なレコードがたくさんあることを意味していると思いますか?(xはyと友達、yはxと友達、2レコード?)

friendsテーブルにフィールドがsender_id receiver_idあり、代わりに、上記request_statusのクエリを変更して、フレンドリストを返すようにすることができますyouruserid。つまり、sender_id == youruseridの場合はreceiver_idの値を選択し、その逆の場合は、youruserid?のすべてのフレンドのリストを1つ取得します。重複を避けるために、これ以上のテーブルは考えられません。

于 2010-03-29T13:20:12.900 に答える