我在用一个小表去left join 一个大表,耗时大概20分钟,感觉数据库抽风了,以前这么做关联大概也就1~2分钟(是不是什么设置改动,导致这样的结果?);
同样的两个表,我把left join 改为 inner join 之后,却只耗时1.5分钟;
请大虾帮忙看一下,这是怎么回事啊?
执行计划如截图,但是刚开始接触执行计划,有点看不懂,请大虾帮忙解答下。
同样的两个表,我把left join 改为 inner join 之后,却只耗时1.5分钟;
请大虾帮忙看一下,这是怎么回事啊?
执行计划如截图,但是刚开始接触执行计划,有点看不懂,请大虾帮忙解答下。
或者重新采集两张表的统计信息试试
ps:重新采集两张表的统计信息?这个怎么做。求指导
首先说一下,看执行计划,不要用pl/sql developer看,用autotrace或者explain看。
left join那个执行计划,用了嵌套循环,且a表为驱动表,然后驱动b表,但a表是通过全表扫描,返回数据量过大,每返回一行,就要驱动一次B表,然后B表再回表,这样会导致a表有多少记录,B表的索引就会被扫描多少次。肯定很慢。
估计是统计信息过期了。你可以到我的博客www.savedba.com里面看一下统计信息部分和表关联部分。就理解为什么这么慢了。