查看: 3719|回复: 8

如何读懂SQL PROFILE 里产生的 HINT 内容?

[复制链接]
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2017-12-12 16:22 | 显示全部楼层 |阅读模式
ORACLE 11204

如下:该怎么读懂,理解?,另外,这些查询块名:"SEL$B36B0BBB"  是系统自动产生的?还是有规律可寻的?

<other_xml><info type="db_version">11.2.0.4</info><info type="parse_schema">
<![CDATA["KDSA918"]]></info><info type="plan_hash">816910263</info><info type="plan_hash_2">2006300514</info><outline_data><hint>
<![CDATA[SEMI_TO_INNER(@"SEL$0C3D91C8" "KOKBF$0"@"SEL$5")]]></hint><hint>
<![CDATA[USE_NL(@"SEL$0C3D91C8" "A"@"SEL$1")]]></hint><hint><![CDATA[USE_NL(@"SEL$0C3D91C8" "B"@"SEL$1")]]>
</hint><hint><![CDATA[LEADING(@"SEL$0C3D91C8" "KOKBF$0"@"SEL$5" "B"@"SEL$1" "A"@"SEL$1")]]>
</hint><hint><![CDATA[INDEX(@"SEL$0C3D91C8" "A"@"SEL$1" ("T_PRD_MO"."FID"))]]>
</hint><hint><![CDATA[INDEX_RS_ASC(@"SEL$0C3D91C8" "B"@"SEL$1" ("T_PRD_MOENTRY"."FENTRYID"))]]>
</hint><hint><![CDATA[FULL(@"SEL$0C3D91C8" "KOKBF$0"@"SEL$5")]]></hint><hint>
<![CDATA[SEMI_TO_INNER(@"SEL$B36B0BBB" "VW_SQ_1"@"SEL$A2158E8A")]]></hint><hint>
<![CDATA[USE_NL(@"SEL$B36B0BBB" "T_CB_PROORDERDIME"@"DEL$1")]]></hint><hint><![CDATA[LEADING(@"SEL$B36B0BBB" "VW_SQ_1"@"SEL$A2158E8A" "T_CB_PROORDERDIME"@"DEL$1")]]>
</hint><hint><![CDATA[INDEX(@"SEL$B36B0BBB" "T_CB_PROORDERDIME"@"DEL$1" ("T_CB_PROORDERDIME"."FFORMID" "T_CB_PROORDERDIME"."FBILLENTRYID"))]]>
</hint><hint><![CDATA[NO_ACCESS(@"SEL$B36B0BBB" "VW_SQ_1"@"SEL$A2158E8A")]]></hint><hint><![CDATA[OUTLINE(@"SEL$5")]]>
</hint><hint><![CDATA[OUTLINE(@"SEL$4")]]></hint><hint><![CDATA[MERGE(@"SEL$5")]]></hint><hint><![CDATA[OUTLINE(@"SEL$7286615E")]]></hint><hint>
<![CDATA[OUTLINE(@"SEL$3")]]></hint><hint><![CDATA[OUTLINE(@"SEL$1")]]></hint><hint><![CDATA[OUTLINE(@"SEL$2")]]></hint><hint><![CDATA[OUTLINE(@"DEL$1")]]></hint><hint>
<![CDATA[MERGE(@"SEL$7286615E")]]></hint><hint><![CDATA[OUTLINE(@"SEL$C8360722")]]></hint><hint><![CDATA[MERGE(@"SEL$1")]]></hint><hint>
<![CDATA[OUTLINE(@"SEL$58A6D7F6")]]></hint><hint><![CDATA[OUTLINE(@"SEL$A2158E8A")]]></hint><hint><![CDATA[UNNEST(@"SEL$C8360722")]]>
</hint><hint><![CDATA[OUTLINE(@"SEL$74E21A19")]]></hint><hint><![CDATA[UNNEST(@"SEL$74E21A19")]]></hint><hint>
<![CDATA[OUTLINE_LEAF(@"SEL$B36B0BBB")]]></hint><hint><![CDATA[OUTLINE_LEAF(@"SEL$0C3D91C8")]]></hint><hint><![CDATA[NO_COST_XML_QUERY_REWRITE]]>
</hint><hint><![CDATA[XMLINDEX_REWRITE_IN_SELECT]]></hint><hint><![CDATA[XMLINDEX_REWRITE]]></hint><hint><![CDATA[XML_DML_RWT_STMT]]>
</hint><hint><![CDATA[FORCE_XML_QUERY_REWRITE]]></hint><hint><![CDATA[ALL_ROWS]]></hint><hint><![CDATA[OPT_PARAM('optimizer_index_caching' 90)]]>
</hint><hint><![CDATA[OPT_PARAM('optimizer_index_cost_adj' 50)]]></hint><hint><![CDATA[OPT_PARAM('_optimizer_use_feedback' 'false')]]></hint><hint>
<![CDATA[OPT_PARAM('_optimizer_adaptive_cursor_sharing' 'false')]]></hint><hint><![CDATA[OPT_PARAM('_optimizer_extended_cursor_sharing_rel' 'none')]]>
</hint><hint><![CDATA[OPT_PARAM('_pred_move_around' 'false')]]></hint><hint><![CDATA[DB_VERSION('11.2.0.4')]]></hint><hint>
<![CDATA[OPTIMIZER_FEATURES_ENABLE('11.2.0.4')]]></hint><hint><![CDATA[IGNORE_OPTIM_EMBEDDED_HINTS]]></hint></outline_data></other_xml>

认证徽章
论坛徽章:
23
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29蒙奇·D·路飞
日期:2018-08-10 09:29:14弗兰奇
日期:2018-07-19 17:11:57娜美
日期:2018-06-22 09:24:50秀才
日期:2018-06-21 10:08:00ITPUB15周年纪念
日期:2018-03-20 15:45:33ITPUB15周年纪念
日期:2018-03-20 15:25:18托尼托尼·乔巴
日期:2018-02-05 08:12:49蒙奇·D·路飞
日期:2018-01-31 16:03:23秀才
日期:2018-01-02 15:35:05
发表于 2017-12-12 17:11 | 显示全部楼层
后面的问题 "SEL$B36B0BBB" 是系统自动产生 ,
大致意思是:一般查询块是SEL$1,SEL$2...
但有些复杂的SQL类似exists,in 在解析时系统查询转换会生成查询块名,8字符hash值

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-12-12 17:45 | 显示全部楼层
请问怎么看sql profile 里面的内容
来自苹果客户端来自客户端

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
 楼主| 发表于 2017-12-12 20:50 | 显示全部楼层
guocun09 发表于 2017-12-12 17:11
后面的问题 "SEL$B36B0BBB" 是系统自动产生 ,
大致意思是:一般查询块是SEL$1,SEL$2...
但有些复杂的S ...

你觉得,能否自己手写这些内容?比如,我要增加某个提示,想手写,但不清楚@SEL$ 怎么产生的,?

使用道具 举报

回复
认证徽章
论坛徽章:
23
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29蒙奇·D·路飞
日期:2018-08-10 09:29:14弗兰奇
日期:2018-07-19 17:11:57娜美
日期:2018-06-22 09:24:50秀才
日期:2018-06-21 10:08:00ITPUB15周年纪念
日期:2018-03-20 15:45:33ITPUB15周年纪念
日期:2018-03-20 15:25:18托尼托尼·乔巴
日期:2018-02-05 08:12:49蒙奇·D·路飞
日期:2018-01-31 16:03:23秀才
日期:2018-01-02 15:35:05
发表于 2017-12-13 08:14 | 显示全部楼层
ZALBB 发表于 2017-12-12 20:50
你觉得,能否自己手写这些内容?比如,我要增加某个提示,想手写,但不清楚@SEL$ 怎么产生的,?

explain plan for
select ...

配合
select * from table(dbms_xplan.display(null,null,'basic +alias'))
輸出看看

使用道具 举报

回复
论坛徽章:
188
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
发表于 2017-12-13 08:33 | 显示全部楼层
ZALBB 发表于 2017-12-12 20:50
你觉得,能否自己手写这些内容?比如,我要增加某个提示,想手写,但不清楚@SEL$ 怎么产生的,?

你不需要知道太多,你看
dbms_xplan.display_cursor
加outline参数看看,能大概猜测到.

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
 楼主| 发表于 2017-12-13 09:09 | 显示全部楼层
guocun09 发表于 2017-12-13 08:14
explain plan for
select ...

没错,这是个方法,

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
 楼主| 发表于 2017-12-13 09:10 | 显示全部楼层
lfree 发表于 2017-12-13 08:33
你不需要知道太多,你看
dbms_xplan.display_cursor
加outline参数看看,能大概猜测到.

DISPLAY_CURSOR 得执行一遍语句,某些语句,带绑定变量,没法执行,

使用道具 举报

回复
论坛徽章:
188
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
发表于 2017-12-13 09:21 | 显示全部楼层
ZALBB 发表于 2017-12-13 09:10
DISPLAY_CURSOR 得执行一遍语句,某些语句,带绑定变量,没法执行,

真正读懂难度很大,我觉得采用替换的方式是最佳的.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表