0

と の 2 つのテーブルがtwitter_followersありtwitter_friendsます。両方のテーブルには多くの列 ( iduser_idtwitter_idなど) があります。単一user_idの場合、両方のテーブルの行数は 100000 レコードを超える可能性があります。

twitter_friends次の方法で ofからレコードを取得したいuser:

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

このクエリは小さなデータセットには問題ありませんが、大量のデータを (できれば数秒で) 取得するのに役立つものはありますか?

4

1 に答える 1

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;
于 2012-10-26T20:21:58.657 に答える