为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:win10
【CPU】:i5-12400f
【问题描述】*:
下列sql语言执行花费1秒钟,然而将最下面那行注释去掉,多一个ORG_ID_的筛选条件,执行需要花费20秒钟。
ORG_ID_有索引,请问这是为什么?
select *
from (select *
from OMV_ORG
where ORGN_SET_ID_ = 'cdc96290b3cc4295a7fa95df9bc9b123'
connect by prior ORG_ID_ = PARENT_ORG_ID_
start with ORG_ID_ = '08A5F488594C4530EE05120C988030AE')
where 1 = 1
and ORGN_SET_CODE_ = 'LE'
-- and ORG_ID_ = '08A5F488594C4530EE05120C988030AE'
老师,语句执行计划方便发一下?
语句前加explain
你用到了层次查询。
数据量怎么样?先收下统计信息,再看下执行计划。
是不是数据库本身的代码有问题?
select /+USE_HTAB(0)/*
from (select *
from OMV_ORG
where ORGN_SET_ID_ = 'cdc96290b3cc4295a7fa95df9bc9b123'
connect by prior ORG_ID_ = PARENT_ORG_ID_
start with ORG_ID_ = '08A5F488594C4530EE05120C988030AE')
where 1 = 1
and ORGN_SET_CODE_ = 'LE'
-- and ORG_ID_ = '08A5F488594C4530EE05120C988030AE'
这样试下
如果没有子查询,下列SQL语句执行只需要几毫秒。
select *
from OM_ORG
where 1 = 1
and ORGN_SET_CODE_ = 'LE'
and ORG_ID_ = '08A5F488594C4530EE05120C988030AE'