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

有时候取数据会从多张表里面找需要的东西,有时候会第一习惯的把一些需要的字段写在select主句里面,后来学习oracle的时候,李兴华老师对子查询关于在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里面,但是关联表又比较多,貌似不好统一把条件限制放到后面去,怎么优化一下,看上去去更有结构感呢?还是说这样写其实没有什么结构不好的,老师说得太绝对了?
展开
 我来答
射手幽灵伊
2015-08-27 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1973万
展开全部
这种方式,应该是表联接比较好。不要用这种子查询。这种子查询相当于外查询执行一个记录,子查询就要查找一下满足的数据。如果用关联,会匹配查询的,速度会快。
追问
关键的话,笛卡尔积会很大,应该更慢吧!
追答
关联,写上关联的条件,不会是笛卡尔积的。没有关联条件,就会是笛卡尔积,有关联条件,就不会了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式