oracle关于select主句里面嵌套select子查询是不是写得不太规范,结构性不好?

有时候取数据会从多张表里面找需要的东西,有时候会第一习惯的把一些需要的字段写在select主句里面,后来学习oracle的时候,李兴华老师对子查询关于在select里面嵌套子查询认为有点没事找事,我想了下可能也是这样的,因为用字段名可能结构更好点,然后把条件都放进where主句里面,但是有的这么做就比较困难的感觉。我有一段如下:
select b.lan_name 地市,
(SELECT m.region_name
FROM channel.common_region m
where a.common_region_id = m.region_id) 县,
(SELECT org_name
FROM channel.organization n
where n.party_id = country_id) 乡镇,
a.circle_code 商圈集团视图编码,
circle_name 商圈名称,
a.circle_id,
circle_point 商圈原点,
circle_scope 商圈地址,
(SELECT attr_value_name
FROM channel.attr_value
where attr_id = 1020
and attr_value = circle_type) 商圈类型,
(SELECT attr_value_name
FROM channel.attr_value
where attr_id = 94031
and attr_value = circle_level) 商圈等级,
(SELECT staff_name
FROM channel.staff_position m, channel.staff n
where m.party_role_id = n.staff_id
and m.staff_pos_id = circle_person) 商圈渠道经理,
mobile 联系电话
from channel.chn_biz_circle a, channel.rr_lan b
where status = 1000
and circle_level = 5
and a.lan_id = b.lan_id;

虽然有好几个子查询在select里面,但是关联表又比较多,貌似不好统一把条件限制放到后面去,怎么优化一下,看上去去更有结构感呢?还是说这样写其实没有什么结构不好的,老师说得太绝对了?

这种方式,应该是表联接比较好。不要用这种子查询。这种子查询相当于外查询执行一个记录,子查询就要查找一下满足的数据。如果用关联,会匹配查询的,速度会快。追问

关键的话,笛卡尔积会很大,应该更慢吧!

追答

关联,写上关联的条件,不会是笛卡尔积的。没有关联条件,就会是笛卡尔积,有关联条件,就不会了。

温馨提示:答案为网友推荐,仅供参考
相似回答