SQL 有效 select 值,其中该值在另一个 table 中有记录

SQL efficiently select values where that value has a record in another table

有一个 table users,字段为 fbidfcmtoken。然后是 table friends 字段 fbidfriendfbid。所以在 friends table 中,要得到我所有的朋友,就必须这样做(只是为了帮助你理解这个想法):

SELECT friendfbid FROM friends WHERE fbid = MYFBID

我需要查询以获取我朋友的所有fcmtokens。我是这样做的,它似乎有效:

SELECT
    fbid,
    fcmtoken
FROM
    users
WHERE
    EXISTS (
        SELECT
            friendfbid
        FROM
            friends
        WHERE
            fbid = ?
        AND friendfbid = users.fbid
    )

是否足够高效?它似乎创建了很多 select 查询,所以让我考虑一下。

SELECT a.friendfbid, b.fcmtoken from friends a, users b where a.fbid = b.fbid

尝试将 WHERE fbid = ? 移动到外部查询中:

SELECT
    fbid,
    fcmtoken
FROM
    users
WHERE fbid = ?
AND EXISTS (
        SELECT
            *
        FROM
            friends
        WHERE
            friendfbid = users.fbid
    )

但加入可能更有效:

SELECT
    u.fbid,
    u.fcmtoken
FROM users AS u
JOIN friends AS f
  ON f.friendfbid = u.fbid
WHERE f.friendfbid = ?