表关联查询和子查询,哪个更好?

ontrackfor19888 2010-09-23 09:31:04
每次遇到一个问题,思路会有两个,要么用关联,要么用子查询,当然都能实现查询要求,考虑效率和其他各方面因素,我应该使用哪个呢?

比如:

GRADE表: sporterid itemid mark
SPORTER表: sporterid name sex department
item表: itemid itemname location
要查出张三参加过的项目的id :


方法1: select g.itemid from grade g,sporter s where s.sprterid=g.sporterid and s.name=‘张三';
方法2: select itemid from grade where sporterid IN (select sporterid from sporter where name='张三');

上面两种方法都可以吧!
每次遇到这些问题的时候我的脑子就老是会想去第二种方法,求大侠指点一下,哪种更好!!
...全文
1112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
the_fire 2010-09-24
  • 打赏
  • 举报
回复
我来学习。

这俩都用过,没有想LZ考虑这么深入
xlxu_tech 2010-09-24
  • 打赏
  • 举报
回复
造个百万条数据测试下看看就知道了,空想是没用的,sporterid IN(,。。) sporterid 数据量大的话设置这个做主键那就更快了噢
huyimin2006 2010-09-24
  • 打赏
  • 举报
回复
关联比子查询效率要高
wangzhiqiang9 2010-09-24
  • 打赏
  • 举报
回复
喜欢 子查询
zn85600301 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dr_lou 的回复:]

数据量小的情况下,没影响
[/Quote]
看情况的 数据量大的时候关联性能更好
Xiaoloveliuforever 2010-09-24
  • 打赏
  • 举报
回复
个人推荐关联
xianaofei 2010-09-24
  • 打赏
  • 举报
回复
方法1: select g.itemid from grade g,sporter s where s.sprterid=g.sporterid and s.name=‘张三';
in很费效率的 你可以查找一下SQL优化方法看看
dr_lou 2010-09-23
  • 打赏
  • 举报
回复
数据量小的情况下,没影响
阿甘1976 2010-09-23
  • 打赏
  • 举报
回复
select itemid from grade inner join sporter on grade.sporterid=sporter.sporterid where name='张三'
楼主的方法一我未用过。
南瓜饼 2010-09-23
  • 打赏
  • 举报
回复
关联````````````

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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