原表和复制表的执行计划不一样
帮忙看下这两个执行计划为啥不一样,test20140619是复制的channel表,索引也是完全一样。channel的统计信息是今天刚收的。
多谢。
SELECT a.* FROM channel a start with a.parent_chn_id = 101
connect by prior a.channel_id = a.parent_chn_id and a.status_cd = '1000'
union
select b.* from channel b where channel_id = 101;
SELECT a.* FROM test20140619 a start with a.parent_chn_id = 101
connect by prior a.channel_id = a.parent_chn_id and a.status_cd = '1000'
union
select b.* from channel b where channel_id = 101;
同事让用下面的方法来收集统计信息后,执行计划就一样了。exec DBMS_STATS.GATHER_TABLE_STATS(ownname=>'XXX',tabname=>'CHANNEL',ESTIMATE_PERCENT=>5,method_opt=>'for all columns size 1',cascade=>true,force=>true,degree=>8);
之前我的收集方法是:
exec DBMS_STATS.GATHER_TABLE_STATS(ownname=>'XXX',tabname=>'CHANNEL')
暂时还不知这其中的差别 新的执行计划 2点
1、任何具体的问题,都要说明版本
2、除非是图形化界面问题,否则不要截图 plan 1的基数计算与实际有较大差别,主要问题在于 id=3 。 但看起来这是张小表 , plan A和 plan B在性能上差距 仅是少量逻辑读 Maclean Liu(刘相兵 发表于 2014-6-19 16:11 static/image/common/back.gif
plan 1的基数计算与实际有较大差别,主要问题在于 id=3 。 但看起来这是张小表 , plan A和 plan B在性能 ...
多谢刘大大回复 ,主要是开发拿这个说事 Maclean Liu(刘相兵 发表于 2014-6-19 16:07 static/image/common/back.gif
2点
1、任何具体的问题,都要说明版本
2、除非是图形化界面问题,否则不要截图 ...
好的 以后注意 多谢提醒 lz的真正疑问是 2种收集统计信息方法的区别吗 TiMi 发表于 2014-7-4 14:41 static/image/common/back.gif
lz的真正疑问是 2种收集统计信息方法的区别吗
是的,为何要第二种收集方法才行 zzwssfd 发表于 2014-7-24 11:13 static/image/common/back.gif
是的,为何要第二种收集方法才行
只要区别在于 ESTIMATE_PERCENT=>5,method_opt=>'for all columns size 1'
其中 method_opt ,在http://www.askmaclean.com/archives/histogram.html 中介绍过 学习,学习
页:
[1]