<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HINT &#8211; 良的世界</title>
	<atom:link href="https://www.lemonary.cn/tag/hint/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lemonary.cn</link>
	<description></description>
	<lastBuildDate>Thu, 19 Mar 2026 09:25:56 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.lemonary.cn/wp-content/uploads/2024/12/logo-150x150.jpg</url>
	<title>HINT &#8211; 良的世界</title>
	<link>https://www.lemonary.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SQL优化之注入HINT</title>
		<link>https://www.lemonary.cn/sql%e4%bc%98%e5%8c%96%e4%b9%8b%e6%b3%a8%e5%85%a5hint/</link>
					<comments>https://www.lemonary.cn/sql%e4%bc%98%e5%8c%96%e4%b9%8b%e6%b3%a8%e5%85%a5hint/#comments</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 09:25:54 +0000</pubDate>
				<category><![CDATA[DM]]></category>
		<category><![CDATA[HINT]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=2600</guid>

					<description><![CDATA[一、说明 功能说明：为 SQL 注入 HINT 规则。SF_INJECT_HINT 方法创建的 HINT 规则 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">一、说明</h2>



<p>功能说明：为 SQL 注入 HINT 规则。SF_INJECT_HINT 方法创建的 HINT 规则无生效类别限制，如果需要为该 HINT 规则设置生效类别，可通过 SF_ALTER_HINT 过程修改实现。</p>



<p>参数说明：<br>sql_text：待注入 HINT 规则的 SQL 语句。SQL 语句必须是语法正确的增删改查语句。<br>hint_text：待注入的 HINT 规则，必须指定为非 NULL 值。<br>name：HINT 规则的名称，指定为 NULL 值时系统为其命名。<br>description：对 HINT 规则的详细描述。<br>validate：HINT 规则是否生效。TRUE 是；FALSE 否。<br>fuzzy：指定 SQL 的匹配规则为精准匹配或模糊匹配，该参数值不能为 NULL。<br>当该参数缺省时，表示使用定义 1 的语法，仅支持精准匹配。<br>该参数类型为 BOOLEAN 时，使用定义 2 或定义 3 的语法，值为 TRUE 时，为模糊匹配；<br>值为 FALSE 时，为精准匹配。<br>精准匹配时，待注入 HINT 规则的 SQL 语句必须为语法正确的 INSERT/DELETE/UPDATE/SELECT/MERGE INTO 语句（语句以 EXPLAIN/EXPLAIN FOR 开头时，去掉 EXPLAIN/EXPLAIN FOR 后的语句必须完全正确），精准匹配要求 SQL 语句完全匹配，不支持 SQL 语句中的子查询匹配；<br>模糊匹配时，待注入 HINT 规则的 SQL 语句应为非 NULL 值。<br>该参数类型为 INT 时，使用定义 4 或定义 5 的语法，值为 0 表示精确匹配，值为 1 表示模糊匹配，值为 2 表示通过 sql_text_id精确匹配。<br>fuzzy 取值为 2 时，参数 sql_text 应该输入长度为 13 的 sql_text_id 字段，如果 fuzzy 取值为 2 但参数 sql_text 依旧输入 SQL 语句，预期会报错。<br>need_clear：是否同步清空所有缓存的计划，该参数值不能为 NULL。<br>当该参数缺省时，表示使用定义 1、定义 2 或定义 4 的语法，此时默认不清空缓存计划。<br>指定该参数时，使用定义 3 和定义 5 的语法，值为 TRUE 时，清空缓存的计划；值为 FALSE 时，模糊匹配和通过 sql_text_id 匹配时，不清空缓存的计划，需要手动清除对应 SQL 的计划后，指定的 HINT 才能生效，精确匹配时，默认会删除受影响 SQL 的计划缓存。</p>



<p>返回值：执行成功返回名称，执行失败报错误信息。</p>



<h2 class="wp-block-heading">二、使用</h2>



<pre class="wp-block-code"><code>--模糊匹配
SF_INJECT_HINT('SQL语句', 'HINT', 'INJECT名称', '注释', TRUE, TRUE);</code></pre>



<p>注入HINT后需要清空对应SQL的计划缓存</p>



<pre class="wp-block-code"><code>BEGIN
    FOR RS IN (SELECT * FROM V$CACHEPLN WHERE SQLSTR LIKE '%SQL语句%') LOOP
        EXECUTE IMMEDIATE 'SP_CLEAR_PLAN_CACHE(' || RS.CACHE_ITEM || ');';
    END LOOP;
END;</code></pre>



<p>查询已经注入的HINT-系统视图</p>



<pre class="wp-block-code"><code>SELECT * FROM SYSINJECTHINT ORDER BY CRTDATE DESC;</code></pre>



<p>删除注入的HINT</p>



<pre class="wp-block-code"><code>SF_DEINJECT_HINT('INJECT名称');</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/sql%e4%bc%98%e5%8c%96%e4%b9%8b%e6%b3%a8%e5%85%a5hint/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
