sql优化,如何将in换为exists

Posted yanpingping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql优化,如何将in换为exists相关的知识,希望对你有一定的参考价值。

原sql语句

-- 根据权限表查出该用户拥有的所有权限菜单
select * from tb_power where id in(
 select power_id  from  tb_role_power where role_id in(
   select role_id from tb_user_role where userid=1
 )
)

优化后

1 -- 优化
2 select * from tb_power  p where  exists(
3  select power_id  from  tb_role_power rp where  exists(
4    select 1 from tb_user_role ur where userid=1 and ur.role_id=rp.role_id
5  )  and p.id=rp.power_id
6 )

 

以上是关于sql优化,如何将in换为exists的主要内容,如果未能解决你的问题,请参考以下文章