从一个表中获取基于其他表的记录的最佳方法

时间:2012-10-26 20:10:42

标签: mysql

我有2个表:twitter_followerstwitter_friends。两个表都有很多列(iduser_idtwitter_id等。对于单个user_id,两个表中的行数可以超过100000条记录。

我想通过以下方式从twitter_friends user检索记录:

SELECT * 
FROM twitter_friends 
WHERE user_id=1 
AND twitter_id NOT IN (SELECT twitter_id FROM twitter_followers WHERE user_id=1)

这个查询适用于少量数据,但任何人都可以帮助我获取大量数据(最好是在几秒钟内)?

1 个答案:

答案 0 :(得分:0)

MySql的子查询性能非常糟糕。我建议使用JOIN语句。

像:

Select Friends.*, Followers.twitter_id
from twitter_friends as Friends
LEFT JOIN twitter_followers as Followers
 on Friends.USER_ID = Followers.USER_ID
where friends.user_id=1 AND followers.twitter_id is null;