in和exists的SQL执行效率分析
A,B两个表,
(1)当只显示一个表的数据如A,关系条件只一个如ID时,使用IN更快:
select * from A where id in (select id from B)
(2)当只显示一个表的数据如A,关系条件不只一个如ID,col1时,使用IN就不方便了,可以使用EXISTS:
select * from A
where exists (select 1 from B where id = A.id and col1 = A.col1)
(3)当只显示两个表的数据时,使用IN,EXISTS都不合适,要使用连接:
select * from A left join B on id = A.id
(4)两者的区别:
EXISTS:后面可以是整句的查询语句
IN:后面只能是对单列
A,B两个表,
(1)当只显示一个表的数据如A,关系条件只一个如ID时,使用IN更快:
select * from A where id in (select id from B)
(2)当只显示一个表的数据如A,关系条件不只一个如ID,col1时,使用IN就不方便了,可以使用EXISTS:
select * from A
where exists (select 1 from B where id = A.id and col1 = A.col1)
(3)当只显示两个表的数据时,使用IN,EXISTS都不合适,要使用连接:
select * from A left join B on id = A.id
(4)两者的区别:
EXISTS:后面可以是整句的查询语句
IN:后面只能是对单列
本文探讨了在不同场景下SQL查询中使用in与exists关键字的执行效率差异。包括单表查询、多条件查询及连接查询等场景,并指出两者适用的最佳情况。
3972

被折叠的 条评论
为什么被折叠?



