ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
查看: 3269|回复: 8

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

[复制链接]
论坛徽章:
306
马上有钱
日期:2014-08-08 17:16:02路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
跳转到指定楼层
1#
发表于 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>

认证徽章
论坛徽章:
18
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29ITPUB15周年纪念
日期: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技术图书徽章
日期:2018-01-02 15:30:09技术图书徽章
日期:2017-12-21 14:05:31妮可·罗宾
日期:2017-11-17 10:43:23技术图书徽章
日期:2017-11-17 09:13:02娜美
日期:2017-12-15 13:56:33
2#
发表于 2017-12-12 17:11 | 只看该作者
后面的问题 "SEL$B36B0BBB" 是系统自动产生 ,
大致意思是:一般查询块是SEL$1,SEL$2...
但有些复杂的SQL类似exists,in 在解析时系统查询转换会生成查询块名,8字符hash值

使用道具 举报

回复
认证徽章
论坛徽章:
0
3#
发表于 2017-12-12 17:45 | 只看该作者
请问怎么看sql profile 里面的内容
来自苹果客户端来自客户端

使用道具 举报

回复
论坛徽章:
306
马上有钱
日期:2014-08-08 17:16:02路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
4#
 楼主| 发表于 2017-12-12 20:50 | 只看该作者
guocun09 发表于 2017-12-12 17:11
后面的问题 "SEL$B36B0BBB" 是系统自动产生 ,
大致意思是:一般查询块是SEL$1,SEL$2...
但有些复杂的S ...

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

使用道具 举报

回复
认证徽章
论坛徽章:
18
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29ITPUB15周年纪念
日期: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技术图书徽章
日期:2018-01-02 15:30:09技术图书徽章
日期:2017-12-21 14:05:31妮可·罗宾
日期:2017-11-17 10:43:23技术图书徽章
日期:2017-11-17 09:13:02娜美
日期:2017-12-15 13:56:33
5#
发表于 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'))
輸出看看

使用道具 举报

回复
论坛徽章:
185
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39ITPUB季度 技术新星
日期:2016-07-07 09:28:30马上有房
日期:2014-11-07 08:46:05马上有钱
日期:2014-11-12 09:33:24马上有钱
日期:2014-11-24 15:17:08马上有对象
日期:2015-01-14 17:33:15沸羊羊
日期:2015-02-11 09:07:41懒羊羊
日期:2015-03-04 09:03:43暖羊羊
日期:2015-03-04 14:50:37
6#
发表于 2017-12-13 08:33 | 只看该作者
ZALBB 发表于 2017-12-12 20:50
你觉得,能否自己手写这些内容?比如,我要增加某个提示,想手写,但不清楚@SEL$ 怎么产生的,?

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

使用道具 举报

回复
论坛徽章:
306
马上有钱
日期:2014-08-08 17:16:02路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
7#
 楼主| 发表于 2017-12-13 09:09 | 只看该作者
guocun09 发表于 2017-12-13 08:14
explain plan for
select ...

没错,这是个方法,

使用道具 举报

回复
论坛徽章:
306
马上有钱
日期:2014-08-08 17:16:02路虎
日期:2014-02-13 10:34:03保时捷
日期:2014-02-14 09:46:462014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
8#
 楼主| 发表于 2017-12-13 09:10 | 只看该作者
lfree 发表于 2017-12-13 08:33
你不需要知道太多,你看
dbms_xplan.display_cursor
加outline参数看看,能大概猜测到.

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

使用道具 举报

回复
论坛徽章:
185
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39ITPUB季度 技术新星
日期:2016-07-07 09:28:30马上有房
日期:2014-11-07 08:46:05马上有钱
日期:2014-11-12 09:33:24马上有钱
日期:2014-11-24 15:17:08马上有对象
日期:2015-01-14 17:33:15沸羊羊
日期:2015-02-11 09:07:41懒羊羊
日期:2015-03-04 09:03:43暖羊羊
日期:2015-03-04 14:50:37
9#
发表于 2017-12-13 09:21 | 只看该作者
ZALBB 发表于 2017-12-13 09:10
DISPLAY_CURSOR 得执行一遍语句,某些语句,带绑定变量,没法执行,

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

使用道具 举报

回复

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

本版积分规则

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