如何解决选择位置:分类及其子级
我有一个查询,我在其中选择分类= 60280或分类是60280的子级的工作单:
select
wo.*
from
workorder wo
where
exists (select 1 from classancestor where ((ancestor = '60280')) and (classstructureid=wo.classstructureid))
(就其价值而言,这类似于Advanced Search window在Maximo List视图中的功能。)
虽然上面的查询工作正常,但我怀疑由于子查询的原因,它在大型表上无法很好地扩展。
解决方法
select
wo.*
from
workorder wo join classancestor ca on (ca.classstructureid=wo.classstructureid)
where
ca.ancestor = '60280'
但这并不一定会更好,因为Oracle会根据需要进行优化。尝试运行几次,看看会发生什么。
,我改编了@Mankowitz的答案:
select
wo.*
from
workorder wo
left join
classancestor ca
on ca.classstructureid = wo.classstructureid
where
ca.ancestor = '60280'
and woclass in ('WORKORDER','ACTIVITY')
and historyflag = 0
and istask = 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。