我正在制作一个用户可以互相关注的 SNS。如果用户 A 关注用户 B,用户 B 也关注用户 A,则他们成为好友。
还要考虑一些受欢迎的人(如电影明星)可能被关注数十万次,但用户最多可以关注 1000 人。
鉴于下表,获取用户 1 的所有朋友 ID 的最佳 SQL 查询是什么?
PS:我使用的是 MySQL 5.5。
这是我到目前为止所做的:
SELECT followee_id AS friend_id FROM follow
WHERE follower_id = 1 AND
followee_id IN (SELECT follower_id FROM follow
WHERE followee_id = 1);
CREATE TABLE follow
(
follower_id INT UNSIGNED NOT NULL,
followee_id INT UNSIGNED NOT NULL,
PRIMARY KEY (follower_id, followee_id),
INDEX (followee_id, follower_id)
);