请简化mysql查询

请简化mysql查询,mysql,Mysql,我有一个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 ) or

我有一个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条款。。。我怎样才能找到最佳性能查询语法呢?

谢谢Steve。表演的特殊条款是什么?表将是巨大的…不同的是,如果连接带来多个匹配-使用EXISTS或NOT EXISTS不会遇到这个问题。这是不可能用NOT EXISTS或EXISTS构建它的?它会有更好的性能吗?不确定性能会如何比较-你能试着两者看看吗?不幸的是,表格还没有填好:-有在线工具可以模拟吗?。。。
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