一条SQL语句变得巨慢的原因及其解决方法

现象:一条SQL突然运行的特别慢。

select uidTable.column_value, first_name||" "
||last_name, company, job_title, upper(member_level), 
upper(service_value)
from (select * from table(select cast(multiset
(select b from bbb)as Taaa) from dual)) uidTable,member
where uidTable.column_value = member.login_id(+) 
and member.site="alibaba" and member.site="test"; 

数据挖掘实验室

出错原因:用户增加了一个条件member.site=test,造成连接的顺序变化了,原来的驱动表是uidTable(最多1024条记录),现在变成了member表做驱动(600W条)。所以这条语句变的巨慢。

但是既然是外连接,为什么连接的顺序会改变呢?因为外连接的连接顺序不是由COST决定的,而是由连接的条件决定的。发现执行计划如下:

-------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
--------------------------------------------------------
| 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |
| 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |
| 2 | VIEW | | 4072 | 69224 | 11 |
| 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |
| 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |
| 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |
| 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |
|* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |
------------------------------------------------- 数据挖掘研究院 

为什么根本就没有执行外连接呢?问题出在member.site="test"这个条件上,因为对外连接的表加了条件,造成外连接失效。改为member.site(+)="test"后,问题彻底解决。

---------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
-----------------------------------------------------
| 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |
| 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |
| 2 | VIEW | | 4072 | 69224 | 11 |
| 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |
| 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |
| 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |
| 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |
|* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |
----------------------------------------------------------- 数据挖掘交友 

(责任编辑:卢兆林)

数据挖掘实验室

数据挖掘论坛

Create By Any-Extract(WL-AE)

[数据挖掘工作交流] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:"Select"语句究竟是如何来使用索引的?
下一篇:提高"SQL Server"性能的几种实用技术
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • MS SQL "1813"错误产生的原因及解决
  • SQL Server 2005的30个最重要特点
  • SQL Server数据仓库相关概念及构建流程
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - L
  • 使用 WebSphere Commerce Analyzer 以关联
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - F
  • 论坛最新话题
  • 线性和非线性回归算法
  • 时间序列预测算法源码(C#)
  • Snowball: A language for stemming algori
  • 搜索引擎Ask.com改版 搜索速度质量双双提升
  • 正规省级、国家级别期刊征集论文稿件
  • 寻data mining cookbook 一书的配套光盘
  • 网博垂直搜索引擎完全开源版
  • 电脑也会成为火灾元凶 操作不当也会有危险
  • 网络暴力间接逼死崔真实 韩国拟立法实名上
  • 网络最流行的歌曲单良《那一场雪》推荐给大
  • 相关资讯
  • SQL Server 2005的30个最重要特点
  • 深入了解SQL Server数据库的线程与纤程
  • 数据挖掘实验室资料
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静
  • mit ocw 数据挖掘相关课程连接
  • Introduction to Data Mining