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;
之后,查询效率迅速提升了,执行计划也与原表一致了。
至于根源原因目前我还没用找到,后续会更新。
如果有大神知道具体的根源原因,也请灌水。

你可能感兴趣的:(Oracle复制表与原表的执行计划不同)