-2

我有一个 MySQL 查询:

SELECT p.* FROM posts p
WHERE 
(
    p.userid in 
    (
        select blogid from abos where userid=11
    )
    OR p.userid = 11
) 
AND NOT EXISTS
(
    SELECT null FROM posts_denied r 
    WHERE r.post_id = p.id AND r.userid = 11
)
order by p.id DESC limit 5

我想删除“where in”子句...请问如何找到性能最佳的查询语法?

4

1 回答 1

0
SELECT DISTINCT p.*
FROM posts p
JOIN abos a
ON p.userid = a.blogid OR p.userid = 11
LEFT JOIN posts_denied r
ON r.post_id = p.id AND r.userid = 11
WHERE (a.userid = 11 OR p.userid = 11)
  AND r.post_id IS NULL
ORDER BY p.id DESC
LIMIT 5
于 2013-08-09T19:46:49.833 回答