Oracle复制表与原表的执行计划不同

最近遇到一个问题,在做数据测试的时候,新建了一张测试表:
select A_test as select * from A where 1=2;之后用脚本跑入数据。
在SQL中,用测试表替换掉原表后,发现查询效率极差:
替换前:
select * from A where A_column1 in (
select A_column1 from A group by A_column1 having count(1)>1);
替换后:
select * from A_test where A_column1 in (
select A_column1 from A_test group by A_column1 having count(1)>1);

查看生成的执行计划也不一样。
网上找了很多资料,最后发现使用语句
analyze table A_test compute statistics;
之后,查询效率迅速提升了,执行计划也与原表一致了。
至于根源原因目前我还没用找到,后续会更新。
如果有大神知道具体的根源原因,也请灌水。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值