还希望研究一下把(+)嵌入到表达式的写法: select * from a left join b on a.name='a' and a.id=b.id; Execution Plan ---------------------------------------------------------- Plan hash value: 1365417139 --------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2 | 80 | 6 (17)| 00:00:01 | |* 1 | HASH JOIN OUTER | | 2 | 80 | 6 (17)| 00:00:01 | | 2 | TABLE ACCESS FULL| A | 2 | 40 | 3 (0)| 00:00:01 | | 3 | TABLE ACCESS FULL| B | 1 | 20 | 2 (0)| 00:00:01 | --------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("A"."ID"="B"."ID"(+) AND "A"."NAME"=CASE WHEN ("B"."ID"(+) IS NOT NULL) THEN 'a' ELSE 'a' END ) 从谓词判断可以看出它等价于: select * from a,b where a.id=b.id(+) AND "A"."NAME"=CASE WHEN ("B"."ID"(+) IS NOT NULL) THEN 'a' ELSE 'a' END;
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页