问题描述
亲爱的汤姆,
如果我在蟾蜍中执行如下查询:
选择 *
来自somechema.TABLE_A A
在B.A_ID = A.A_ID上加入一些切马表B
在A.C_ID = C.C_ID上加入某些化学2.table _c C
在B.D _ id = D.D _ id上加入一些切美表D D
其中C.C_ID = 1234;
查询结果在不到一秒钟的时间内返回。
如果我现在执行查询:
选择 *来自somechema.TABLE_A A
在B.A_ID = A.A_ID上加入一些切马表B
在A.C_ID = C.C_ID上加入某些化学2.table _c C
在B.D _ id = D.D _ id上加入一些切美表D D
其中C.C_ID = 1234;
查询结果在大约45秒内返回。这两个查询之间的唯一区别是 * 和从之间的换行符。
结果是可重复的。
你知道为什么会发生这种情况吗?
谢谢!
如果我在蟾蜍中执行如下查询:
选择 *
来自somechema.TABLE_A A
在B.A_ID = A.A_ID上加入一些切马表B
在A.C_ID = C.C_ID上加入某些化学2.table _c C
在B.D _ id = D.D _ id上加入一些切美表D D
其中C.C_ID = 1234;
查询结果在不到一秒钟的时间内返回。
如果我现在执行查询:
选择 *来自somechema.TABLE_A A
在B.A_ID = A.A_ID上加入一些切马表B
在A.C_ID = C.C_ID上加入某些化学2.table _c C
在B.D _ id = D.D _ id上加入一些切美表D D
其中C.C_ID = 1234;
查询结果在大约45秒内返回。这两个查询之间的唯一区别是 * 和从之间的换行符。
结果是可重复的。
你知道为什么会发生这种情况吗?
谢谢!
专家解答
试试这个-运行每个提示如下
可能会产生不同的计划。
在此处发布带有代码标签的dbms_xplan的输出,我们可以看看
select /*+ gather_plan_statistics */ * from SOMESCHEMA.TABLE_A A join SOMESCHEMA.TABLE_B B on B.A_ID = A.A_ID join SOMESCHEMA2.TABLE_C C on A.C_ID = C.C_ID join SOMESCHEMA.TABLE_D D on B.D_ID = D.D_ID where C.C_ID = 1234; select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST')); select /*+ gather_plan_statistics */ * from SOMESCHEMA.TABLE_A A join SOMESCHEMA.TABLE_B B on B.A_ID = A.A_ID join SOMESCHEMA2.TABLE_C C on A.C_ID = C.C_ID join SOMESCHEMA.TABLE_D D on B.D_ID = D.D_ID where C.C_ID = 1234; select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'))
可能会产生不同的计划。
在此处发布带有代码标签的dbms_xplan的输出,我们可以看看
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




