如何优化这个mysql查询?我使用IN()运算符

如何优化这个mysql查询?我使用IN()运算符,mysql,sql,optimization,Mysql,Sql,Optimization,如何优化这个mysql查询?我使用的是IN()操作符,但我相信这不是实现它的方法 select * from users where usid NOT in ( select usid from images where status=0 ) and us_status=0 您可以使用以下查询: SELECT us.* FROM users as us INNER JOIN images as img ON us.usid = img.usid AND img.status=1

如何优化这个mysql查询?我使用的是
IN()
操作符,但我相信这不是实现它的方法

select * 
from users 
where usid NOT in 
(
select usid 
from images 
where status=0
) 
and us_status=0

您可以使用以下查询:

SELECT us.* 
FROM users  as us
INNER JOIN images as img ON us.usid = img.usid AND img.status=1
WHERE us.us_status = 0

必须阅读文章:

使用左外连接

SELECT users.* 
FROM users 
LEFT OUTER JOIN images ON user.usid = images.usid AND images.status = 0
WHERE images.usid IS NULL
AND us_status = 0

这样可以避免使用性能较差的选项。

更重要的是,在这里,公认的答案应该可以帮助您。总之,对于MySQL,请使用
LEFT JOIN/IS NULL
删除匹配的记录。非常感谢,取而代之的是us\u状态必须是users。状态是吗?您最初的查询中包含us\u状态。如果这是user.status的输入错误,则将其更改为该错误
SELECT users.* 
FROM users 
LEFT OUTER JOIN images ON user.usid = images.usid AND images.status = 0
WHERE images.usid IS NULL
AND us_status = 0