Mysql 选择花费如此长的时间来完成

Mysql 选择花费如此长的时间来完成,mysql,Mysql,我选择此选项以向用户显示以下建议 首先它将从一个用户那里获得关注,然后它将检查用户是否没有关注这个用户。检查用户是否未阻止此建议,以及建议是否未阻止用户并显示它 select c.user, c.nome, p.foto, f.user, f.following from following f left join cadastro c ON c.id=f.following left join profile_picture p ON c.id=p.user where f.user in

我选择此选项以向用户显示以下建议

首先它将从一个用户那里获得关注,然后它将检查用户是否没有关注这个用户。检查用户是否未阻止此建议,以及建议是否未阻止用户并显示它

select c.user, c.nome, p.foto, f.user, f.following from following f

left join cadastro c ON c.id=f.following
left join profile_picture p ON c.id=p.user

where f.user in (select following from following where user = 1) and following <> 1 and following not in (select following from following where user = 1)

and (c.id not in (select `block` from block where user = 1))
and (c.id not in (select `user` from block where block = 1))

group by following order by rand() limit 4
有什么改进的办法吗?大约需要3.4641秒

您的查询使用: 2个联接、4个嵌套查询、1个分组和1个排序。总成本应该很高


尝试进一步简化查询。

您的查询有太多子查询要执行,请使用MySQL workbench实用程序检查您的查询执行计划。