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的主要内容,如果未能解决你的问题,请参考以下文章

SQL优化- 数据库SQL优化——使用EXIST代替IN

SQL优化 - 避免使用 IN 和 NOT IN

如何使用 WHERE IN 子查询优化 SQL 查询

数据库优化之SQL语句优化-记录

SQL优化

SQL操作符的优化