1

サブクエリを使用する単純なクエリがあります。

SELECT pictures.*
FROM pictures
WHERE pictures.user_id IN
    (SELECT follows.following_id
     FROM follows
     WHERE follows.follower_id = 9)
ORDER BY created_at DESC LIMIT 5;

a)サブクエリを削除して代わりにJOINSを使用するにはどうすればよいですか?b)サブクエリの代わりにJOINSを使用するとパフォーマンスが向上しますか?

(follows.following_id、follows.follower_id、pictures.user_id はすべてインデックス化されています)

ありがとう

4

1 に答える 1

4
SELECT  DISTINCT pictures.*
FROM    pictures
        INNER JOIN follows
            ON pictures.user_ID = follows.following_id
WHERE   follows.follower_id = 9
ORDER   BY pictures.created_at DESC 
LIMIT   5

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

アップデート

同じ結果を得る別の方法は、EXISTS

SELECT  *
FROM    pictures
WHERE   EXISTS
        (
            SELECT  1
            FROM    follows
            WHERE   pictures.user_ID = follows.following_id AND
                    follows.follower_id = 9
        )
ORDER   BY pictures.created_at DESC 
LIMIT   5
于 2013-06-01T17:43:49.287 に答える