以下两个SQL结果一样的,哪种写法好呢?select (select r.organ_name from ORGANIZATION r where r.organ_id=t.land_gts_id) as 部门 from CASE_DAY_LIST t;select r.organ_name as 部门 from CASE_DAY_LIST t left join ORGANIZATION r on r.organ_id=t.land_gts_id;
调试欢乐多
你r.organ_id=t.land_gts_id过滤条件要是过滤出多条,不就出错了吗?
这2条语句不等价。
语句1与下面的语句等价
SELECT r.organ_name
FROM CASE_DAY_LIST t,ORGANIZATION r
WHERE r.organ_id=t.land_gts_id
和表的数据量以及查询结果集有一定的关系。 ORGANIZATION表较大时,而查询结果集较小时,第一种效率可能会比较高,
而ORGANIZATION较小,查询结果集较大时,第二种效率可能会比较高,ORGANIZATION较大两表连接可能改变原来的执行计划,导致效率低。在子查询中一般需要加上rownum=1的条件,一方面防止id重复,另一方面能提高性能。 上面说的都是可能,并没有绝对。