(问题更新了)SQL: 稍微复杂一点的代码,where 语句的执行

我想知道下面代码是如何执行的,尤其是那两个where语句?谢谢。
原来想先写下我的想法,但是可能写一大堆都是错误的。

SELECT firtname, lastname
FROM managers
WHERE 'MA'=
(​
SELECT jobcategory​
FROM supervisors​
WHERE managers.id=supervisors.id
)​
;
OPTIMIZER 可能会这样:
1) 找出 supervisors 表里的所有 jobcategory = 'MA' 的行的 id, 并把它们放到一个 cursors 里;supervisors 中的 jobcategory 最好有个 index

2) 在表 managers 中,凡是 id 在 1) 的cursors 里的,输出其 firtname, lastname

不确定是不是这样,你可以在 Oracle 里试,并且在 Oracle 里查 explain plan, 它会告诉你这个 SQL 怎么执行!
 
感谢。另一个贴在等你,一帮人等着揍你。哈哈。
我没有Oracle,我在想象别的办法。

OPTIMIZER 可能会这样:
1) 找出 supervisors 表里的所有 jobcategory = 'MA' 的行的 id, 并把它们放到一个 cursors 里;supervisors 中的 jobcategory 最好有个 index

2) 在表 managers 中,凡是 id 在 1) 的cursors 里的,输出其 firtname, lastname

不确定是不是这样,你可以在 Oracle 里试,并且在 Oracle 里查 explain plan, 它会告诉你这个 SQL 怎么执行!
 
后退
顶部