关于hint问题的咨询

putaofeng 2006-04-29 09:24:15
我的一个sql单从执行计划来看很好,但是运行起来效率很差。后来看数据发现IDX_PROBPRN_REGION_CODE的结果集很大,NESTED LOOPS用在这里就会很慢。听说过这种情况下用MERGE JOIN会很高效,但是我不清楚hint怎么指定使用MERGE JOIN。

请高人指点一下,谢谢啦!

SELECT STATEMENT, GOAL = CHOOSE
SORT UNIQUE
NESTED LOOPS
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID Object owner=LIFEREPT Object name=PROBPRN
INDEX RANGE SCAN Object owner=LIFEREPT Object name=IDX_PROBPRN_REGION_CODE
TABLE ACCESS BY INDEX ROWID Object owner=LIFEREPT Object name=PROBPRN_TRACE
INDEX RANGE SCAN Object owner=LIFEREPT Object name=IDX_PROBPRN_TRACE
TABLE ACCESS BY INDEX ROWID Object owner=LIFEREPT Object name=PROBPRN_DESC
INDEX RANGE SCAN Object owner=LIFEREPT Object name=IDX_PROBPRN_DESC
...全文
193 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cenlmmx 2006-04-29
  • 打赏
  • 举报
回复
select /*+ USE_MERGE(PROBPRN, PROBPRN_TRACE, PROBPRN_DESC) */ ... from ... where ...

最好少用merge join,它会消耗大量的IO,仅适合于连接表上无索引而且返回数据量较大.

建议你使用hash join试试. select /*+ USE_HASH(PROBPRN, PROBPRN_TRACE, PROBPRN_DESC) */

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧