首页 新闻 会员 周边 捐助

oracle 递归查询问题(两个数据完全一致的表执行结果却不同)

0
悬赏园豆:20 [已解决问题] 解决于 2014-04-18 16:15

问题是这样的。我某个sql查询测试库能正常跑。正式库查询却超时(一直执行)

处理:

1.将正式库数据完全负责到测试库依然能跑通,耗时也不多。

2.将查询涉及到的表从正式库完全拷贝一份(create table as select * from 某个表),成功模拟出问题却是一直执行。

3.将部分表采用本地原表,测试出企业表查询有问题(可是原表和新表数据完全一样,为什么会出这样的情况,采用

SELECT * FROM c_company_4_9
MINUS
SELECT * FROM C_COMPANY;表情两个表数据完全一致。这就纳闷了

)。

4.我将本地表复杂一份(不管是复杂还是creat 都会一直执行,原表却能马上出结果,求解释……)

sql:C_ZONE 自关联4级区域表,C_COMPANY 企业表(自关联包含分子公司),

C_DEALERS_ZONE 企业管辖区域映射表

SELECT COUNT(ZONE_ID)
FROM
  (SELECT DISTINCT ZONE_ID
  FROM C_ZONE
    START WITH ZONE_ID IN
    (SELECT zid
    FROM
      (SELECT d.c_z_id AS zid, d.c_com_id AS comid FROM C_DEALERS_ZONE d
      )
    WHERE COMID IN
      (SELECT CORP_ID
      FROM C_COMPANY
        START WITH corp_id       = 4319
        CONNECT BY PRIOR CORP_ID = CORP_PARENTID
      )
    )
    CONNECT BY PRIOR ZONE_ID = ZONE_PARENT
  ) T;

目前纠结的问题:还望各位大神给点意见

  create table c_company_4_09 as select * from c_company;创建新表

原表:c_company 能执行,新表:c_company_4_09 跑不通,一直在执行

直接通过工具的复制表和数据,结果新表依然跑不通一直执行。这是为什么。

求大神,希望给我给点介意,解决测试方法什么的。小弟感激不尽

问题补充:

应该是由于索引问题!!!导致

kunsy的主页 kunsy | 初学一级 | 园豆:164
提问于:2014-04-09 11:52
< >
分享
最佳答案
0

你基本上已经定位到问题表了,那么你是不是把问题表的建表语句贴出来一下呢?把你测试库和正式库的执行计划也贴出来看看。说明一下你的数据量。尝试重建索引试试?

收获园豆:20
bitbug | 菜鸟二级 |园豆:470 | 2014-04-15 11:50

也就几千的数据量,大概由于表没有索引,又采用了两层递归查询导致。谢谢你的回答

kunsy | 园豆:164 (初学一级) | 2014-04-18 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册