sql 效率优化,请高手过来看下,关于外连接和In 的效率
1selectIDfromtestwhereidin(1,2,3,4)2selectIDfromtestt1innerjoin(select1aunionallselec...
1
select ID from test where id in (1,2,3,4)
2
select ID from test t1
inner join (select 1 a union all select 2 union all select 3 union select 4) t2 on t1.id = t2.a
这两个效率哪个高点
说错了,是内连接。不是外连接。 展开
select ID from test where id in (1,2,3,4)
2
select ID from test t1
inner join (select 1 a union all select 2 union all select 3 union select 4) t2 on t1.id = t2.a
这两个效率哪个高点
说错了,是内连接。不是外连接。 展开
4个回答
展开全部
第一个效率高,想提高效率,就要把所有的sql写成最简单的。逻辑放在程序中,不要放到数据库中
追问
看网上说,in 的效率非常低,用内连接的效率要高很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多表in查找方式,系统"执行计划"显示自动使用inner join方式配匹
(注:结果集比较大的情况下则用join的效率高于用in。ps来源网络,我没测试过)
in语句多表查询时,“执行计划”显示优于inner join ,但in查询结集只返回主表的数据。inner 返回多表数据,作用不相同比较速度是没意义的。
你可以自己测试下,在查询语句前加上
set statistics IO on
set statistics time on
就能看查询所要IO、时间
(注:结果集比较大的情况下则用join的效率高于用in。ps来源网络,我没测试过)
in语句多表查询时,“执行计划”显示优于inner join ,但in查询结集只返回主表的数据。inner 返回多表数据,作用不相同比较速度是没意义的。
你可以自己测试下,在查询语句前加上
set statistics IO on
set statistics time on
就能看查询所要IO、时间
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然是第一个高!
追问
看网上说,in 的效率非常低,用内连接的效率要高很多
追答
那前提是在两个不同的表之间,你这个就一个表,干嘛要执行两遍查询呢?
比如下面两个语句的对比后一句就比前一句要效率高:
select column1,column2 from table1 where id in (select id from table2)
select a.column1 column1,b.column2 column2 from table1 a inner join table2 b on a.id=b.id
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询