簡體   English   中英

MySQL 子查詢是否考慮父查詢的限制?

[英]Does MySQL Subquery consider Limit from Parentquery?

MySQL 是否限制內查詢:

(SELECT followId FROM followings WHERE followerId = '$userId')

來自“ParentQuery”的限制?

SELECT id, fullname FROM users 
WHERE id IN 
(
 SELECT followId FROM followings 
 WHERE followerId = '$userId'
) 
ORDER BY id DESC LIMIT 0, 20 <--- is normally Pagination with offset and limi

如果沒有,我該怎么辦,不是所有的追隨者 id 都被獲取? 我覺得這個查詢對性能非常不利。

SELECT u.id, u.fullname
    FROM ( SELECT DISTINCT followId
            FROM followings
            WHERE followerId = '$userId'
            ORDER BY followId DESC
            LIMIT 0, 20
         ) AS f
    JOIN users AS u  ON f.followId = u.id
    ORDER BY u.id DESC  -- yes, repeated
    -- unnecessary here: LIMIT 0, 20

followers:  INDEX(followerId, followId)

請注意這是如何以$userId開頭的。

這個解決方案對我有用。

SELECT     users.id, 
           users.fullname, 
           users.username, 
           users.profileimagex1, 
           users.profileimagex2, 
           users.isverified 
FROM       users 
INNER JOIN followings 
ON         followings.followerid = users.id 
WHERE      followings.followid = '$userId' 
AND        followings.accepted = 1 
ORDER BY   followings.id DESC LIMIT 0, 20

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM