关于sql的查询 单单用in和用Join那个效率快?--请大家各抒己见!

wayuILY 2008-09-04 06:16:26
什么情况?用那个比较好?
...全文
645 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wayuILY 2009-02-13
  • 打赏
  • 举报
回复
突然看到自己以前的帖子,发现 sp123 讲的很好。
  • 打赏
  • 举报
回复
哦,上面的表达式有点简化,其实应该为select出同时在两个表中的字段写exists方式的SQL表达式。例如发现field_0有索引,就应该采用第二个表达式,这样结果中就只有TB中的字段,当在结果中如果要包括TA的字段,就可以使用字段内子查询表达式从TA中查询出结果与TB中的字段合并,因为TA是有索引的所以即使在子查询中进行很多次也很快。反之,对field_1有索引也是这样。
mjjzg 2008-09-04
  • 打赏
  • 举报
回复
3楼的很是详细了,jf
  • 打赏
  • 举报
回复
其实如果你要精通SQL分析,你可以尝试把所有关系操作都取消,仅使用Exits和not Exists两个操作符来写所有的关联SQL查询。

例如:

select * from TA as a where a.field_0 in (select field_1 from TB)

可以写为:

select * from TA as a wher exists(select * from TB where field_1=a.field_0)



select * from TA as a inner join TB as b on a.field_0=b.field_1

实际上可以写为
select * from TA as a wher exists(select * from TB where field_1=a.field_0)
select * from TB as b wher exists(select * from TA where field_0=b.field_1)
这完全取决于索引在哪个字段上,当两个字段都有索引时则它的统计信息(哪一个索引到的叶子数据少)则用来选择谁放在前面。

实际上,SQL Server优化器正是在内部将其它的许多查询转换为exists操作的。
king5281273 2008-09-04
  • 打赏
  • 举报
回复
问题看得不是很清楚,join是用在多表连接,in是条件语句。
搞不懂要怎么比较?
帮你顶下。。。。
wanghao3616 2008-09-04
  • 打赏
  • 举报
回复
不同的两个 概念 比什么比啊 
JOIN 是表连接是用到的关键字 
in 指令 就是看某个字段是否在这个集合里

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧