Oracle(二)- 笛卡尔积造成的问题(一)
来源:互联网 发布:央视网络电视台直播 编辑:程序博客网 时间:2024/05/21 14:49
问题sql:
select /*+rule */ a.unoin,a.name,b.product_id,c.partiname from pc_union_detail a,sp_product_all b,bf_dict c where a.union_id=b.union_id and c.dict_id between :1 and :2;
现象:当 a ,b,c三个表的数据量较大时会造成数据库很慢
分析:
/*+rule */是选择 RBO 优化器进行查询,基于规则的优化器。他有一个特点就是在选择表的时候驱动表是从右往左。驱动表可以理解成要查询的第一个表。那么上面的语句先选择 b c 两个表,而b c表没有关联,那么会使用交叉连接,产生笛卡尔积,如果A表1w数据,B C表10w数据的话,那么此时首先会产生一个10W*10W的结果集。虽然通过 c.dict_id between :1 and :2过滤了C表,发现仍然C表的数据量较大,此时由于此原因会造成Oracl产生latch:cache buffer chain,影响性能。
定位问题的语句:
select sql_id,count(*) from v$session where event='latch:cache buffer chain' order by 2
0 0
- Oracle(二)- 笛卡尔积造成的问题(一)
- rows算错导致错误的笛卡尔积造成temp不足
- 不是笛卡尔积的问题
- 笛卡尔积()
- PHP好玩的代码一(笛卡尔的情书)
- Matlab Tricks(二十八)—— 笛卡尔积的实现
- Oracle:笛卡尔积
- php实现数组的笛卡尔积(张高伟)
- 笛卡尔积实现(递归C++版本)
- 通过笛卡尔积解决无关联的问题
- (二)Oracle EBS的问题
- iOS中的crash防护(二)KVC造成的crash
- Oracle 笛卡尔积交集内外连接
- Oracle笛卡尔积,分组,多表连接
- Oracle笛卡尔积与连接查询
- C#语法造成的小问题(编译原理知识)
- 笛卡尔积的Java实现
- php 笛卡尔积的实现
- unity获取系统时间
- DIV+CSS教程《第一天 XHTML CSS基础知识》
- malloc/free与new/delete的区别
- 【枚举排序】生成可重集排序
- GridView禁止横向滑动
- Oracle(二)- 笛卡尔积造成的问题(一)
- DIV+CSS教程《第二天 一列布局》
- DB2文件注册表
- android中捕获ontouchlistener问题
- YUV格式到RGB格式的转换
- 设计模式之装饰者模式
- 音乐播放器 vmp 代码部分
- virtual Studio在命令行下的使用
- 二叉树的先序遍历