热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle10g的隐含参数_complex_view_merging引发的性能问题

今天在Oracle10g上碰到一个奇怪的问题,有一条sql在数据库1上很快,在数据库2上很慢,数据库2的数据是从数据库1上导的,数据量差

今天在Oracle 10g上碰到一个奇怪的问题,有一条sql在数据库1上很快,在数据库2上很慢,数据库2的数据是从数据库1上导的,数据量差

今天在Oracle 10g上碰到一个奇怪的问题,有一条sql在数据库1上很快,,在数据库2上很慢,数据库2的数据是从数据库1上导的,数据量差不多。

在数据库1上执行0.01s。

SQL> SELECT A.*,
2 B.INCREASE_ID,
3 B.TRANSACTION_ID,
4 B.LINK_CARD_ID,
5 B.VALIDATE_FLAG,
6 B.ASSET_VALUE_SHARING,
7 B.RELATED_DEVICE_ID,
8 B.PARENT_CARD_CODE,
9 B.PROJECT_VALUE,
10 B.DELETE_FLAG,
11 B.DEPRECIATION_ADJUST_VALUE,
12 T.TRANSACTION_MODE_CODE,
13 T.TRANSACTION_NO,
14 T.TRANSACTION_FROM,
15 T.FROM_MODEL,
16 (SELECT T.FULL_PATH
17 FROM AM_TECH_OBJECT_NODE_0900 T
18 WHERE T.TECH_OBJECT_ID = A.DEVICE_ID
19 AND T.NODE_TYPE = 2
20 AND ROWNUM = 1) AS FULL_PATH,
21 AAC.FULL_NAME CLASSIFY_FULL_PATH
22 FROM V_ASSET_CARD_0900 A,
23 GG_ASSET_INCREASE_ITEM B,
24 GG_ASSET_TRANSACTION T,
25 AM_ASSET_CLASSIFY AAC
26 WHERE A.CARD_ID = B.CARD_ID
27 AND B.TRANSACTION_ID = T.TRANSACTION_ID
28 AND A.CLASSIFY_ID = AAC.DEVICE_CLASSIFY_ID(+)
29 AND B.TRANSACTION_ID = '0101109514';
已用时间: 00: 00: 00.01
执行计划
----------------------------------------------------------
Plan hash value: 3643758043
-------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 21 | 24129 | 167 (0)| 00:00:03 |
|* 1 | COUNT STOPKEY | | | | | |
| 2 | TABLE ACCESS BY INDEX ROWID | AM_TECH_OBJECT_NODE_0900 | 1 | 73 | 4 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | IDX_TECH_NODE_ID_0900 | 1 | | 3 (0)| 00:00:01 |
| 4 | NESTED LOOPS OUTER | | 21 | 24129 | 167 (0)| 00:00:03 |
| 5 | NESTED LOOPS | | 21 | 22533 | 146 (0)| 00:00:02 |
| 6 | NESTED LOOPS | | 20 | 12700 | 106 (0)| 00:00:02 |
| 7 | NESTED LOOPS | | 20 | 10900 | 46 (0)| 00:00:01 |
| 8 | NESTED LOOPS | | 20 | 2000 | 6 (0)| 00:00:01 |
| 9 | TABLE ACCESS BY INDEX ROWID| GG_ASSET_TRANSACTION | 1 | 42 | 2 (0)| 00:00:01 |
|* 10 | INDEX UNIQUE SCAN | PK_GG_ASSET_TRANSACTION | 1 | | 1 (0)| 00:00:01 |
| 11 | TABLE ACCESS BY INDEX ROWID| GG_ASSET_INCREASE_ITEM | 20 | 1160 | 4 (0)| 00:00:01 |
|* 12 | INDEX RANGE SCAN | TRANSACTION_DETAIL_REF_TRANSAC | 20 | | 1 (0)| 00:00:01 |
| 13 | TABLE ACCESS BY INDEX ROWID | GG_ASSET_CARD_0900 | 1 | 445 | 2 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | PK_GG_ASSET_CARD_0303 | 1 | | 1 (0)| 00:00:01 |
| 15 | TABLE ACCESS BY INDEX ROWID | GG_ASSET_VALUE_0900 | 1 | 90 | 3 (0)| 00:00:01 |
|* 16 | INDEX RANGE SCAN | ID_FAV_CARD_VALIDITY_0303 | 1 | | 2 (0)| 00:00:01 |
| 17 | TABLE ACCESS BY INDEX ROWID | AM_ASSET_0900 | 1 | 438 | 2 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | PK_AM_ASSET_0900 | 1 | | 1 (0)| 00:00:01 |
| 19 | TABLE ACCESS BY INDEX ROWID | AM_ASSET_CLASSIFY | 1 | 76 | 1 (0)| 00:00:01 |
|* 20 | INDEX UNIQUE SCAN | PK_AM_ASSET_CLASSIFY | 1 | | 0 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(ROWNUM=1)
3 - access("T"."TECH_OBJECT_ID"=:B1 AND "T"."NODE_TYPE"=2)
10 - access("T"."TRANSACTION_ID"='0101109514')
12 - access("B"."TRANSACTION_ID"='0101109514')
14 - access("GG_ASSET_CARD"."CARD_ID"="B"."CARD_ID")
16 - access("GG_ASSET_VALUE"."CARD_ID"="GG_ASSET_CARD"."CARD_ID" AND
"GG_ASSET_VALUE"."VALIDITY_DATE_END"="GG_ASSET_CARD"."DECREASE_DATE")
18 - access("AM_ASSET"."DEVICE_ID"="GG_ASSET_CARD"."DEVICE_ID")
20 - access("AM_ASSET"."CLASSIFY_ID"="AAC"."DEVICE_CLASSIFY_ID"(+))
统计信息
----------------------------------------------------------
8 recursive calls
0 db block gets
28 consistent gets
0 physical reads
0 redo size
12384 bytes sent via SQL*Net to client
338 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

推荐阅读
  • 本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ... [详细]
  • NIO 通道接口详解
    本文介绍了NIO(New Input/Output)中的通道接口及其相关概念,包括通道的基本功能、接口设计以及各类通道接口的具体用途。通过本文,读者可以深入了解NIO通道的设计原理及其在实际项目中的应用。 ... [详细]
  • 请求一段SQL代码,用于从数据库中提取当前日期前7天的数据记录。例如,如果今天是2011年5月9日,则需要获取从2011年5月3日至2011年5月9日之间的所有记录。 ... [详细]
  • SQL Server 实例默认排序规则详解
    本文详细介绍了如何在安装过程中为 SQL Server 实例指定默认排序规则,并讨论了不同安装选项下的排序规则选择逻辑。 ... [详细]
  • 使用Solr从MySQL导入数据构建全量索引
    为了更好地掌握Solr的各项功能,本文档将在本地Windows环境中演示如何从MySQL数据库中导入数据至Solr,并构建全量索引。这将有助于开发者熟悉Solr的数据处理流程,尤其是在无法直接在生产服务器上进行实践的情况下。 ... [详细]
  • MySQL中的Anemometer使用指南
    本文详细介绍了如何在MySQL环境中部署和使用Anemometer,以帮助开发者有效监控和优化慢查询性能。通过本文,您将了解从环境准备到具体配置的全过程。 ... [详细]
  • 本文旨在为读者提供SPSS中t检验和卡方检验的简单明了介绍,帮助初学者快速掌握这两种常用统计方法的应用技巧。通过实际案例分析,加深对理论知识的理解。 ... [详细]
  • 本文探讨了Oracle数据库中角色的创建与管理方法,包括如何使用SET ROLE命令激活特定角色,并调整用户的默认角色设置。 ... [详细]
  • 如何在HTML中为两个不同的div设置不同的overflow属性
    探讨在Web前端开发中,如何使用CSS的overflow属性来实现两个div的不同滚动效果,特别是当设计一个弹出窗口时的需求处理。 ... [详细]
  • 本文介绍了如何在Delphi中使用TSimpleMsgPack组件来实现消息的打包和解包功能,包括网络通信中的数据处理。 ... [详细]
  • 在尝试通过Java项目连接Oracle数据库时,遇到了一个严重的初始化上下文监听器异常。 ... [详细]
  • 本文详细介绍了如何在 Python 3.3 环境下操作 MySQL 数据库,包括调用存储过程、连接数据库以及基本的数据操作方法。 ... [详细]
  • 本文详细介绍了MyBatis中的延迟加载功能,包括其基本概念、实现方式以及如何在实际开发中应用。通过具体的代码示例,帮助读者更好地理解和掌握这一优化数据库查询性能的重要技术。 ... [详细]
  • 在不断发展的信息技术领域,选择合适的数据库管理系统对项目成功至关重要。本文通过比较Oracle和SQL Server两种主流数据库,探讨它们在不同应用场景下的优缺点,帮助开发者根据自身需求做出合理选择。 ... [详细]
  • Working with Errors in Go 1.13
    作者|陌无崖 ... [详细]
author-avatar
世界和平啊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有