请教下面两sql语句的区别?

[复制链接]
查看11 | 回复2 | 2006-4-17 13:46:34 | 显示全部楼层 |阅读模式
理解关联子查询和非关联子查询
select staff_name from staff_member where
staff_id in (select staff_id from staff_func);
select staff_name from staff_member where
staff_id in (select staff_id from
staff_func where staff_member.staff_id = staff_func.staff_id);
请教哪句的执行效率 更高 ?为何?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
自己测一下,显示EXEC PLAN
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
从效率上说,非关联查询当然快写。
第一句SQL执行是这样的,内部查询首先运行形成一个结果集放到内存中,然后和外部查询结果作运算得到最终结果集。
但是第二个关联查询就不是这样,对外部查询的每一条记录,内部查询都会运行一次。
这样的话效率差别就出来了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行