我是靠谱客的博主 有魅力小土豆,最近开发中收集的这篇文章主要介绍达梦为 SQL 指定 HINT,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录


达梦为 SQL 指定 HINT,在无需修改SQL语句的情况下,来保证SQL执行计划在不同硬件环境下相同,从而保证SQL语句在不同环境的执行效率。在达梦数据库中使用SF_INJECT_HINT系统函数来为SQL绑定HINT

1、使用时有以下限制:

1) INI 参数 ENABLE_INJECT_HINT 需设置为 1;
2) SQL 只能是语法正确的增删改查语句;
3) SQL 会经过系统格式化,格式化之后的 SQL 和指定的规则名称必须全局唯一;
4) HINT 一指定,则全局生效;
5) 系统检查 SQL 匹配时,必须是整条语句完全匹配,不能是语句中子查询匹配;
6) 可通过 SYSINJECTHINT 视图查看已指定的 SQL 语句和对应的 HINT。

2、 SF_INJECT_HINT
定义

VARCHAR
SF_INJECT_HINT (
SQL_TEXT TEXT,
HINT_TEXT TEXT,
NAME VARCHAR(128),
DESCRIPTION VARCHAR(256),
VALIDATE BOOLEAN
)
或者
VARCHAR
SF_INJECT_HINT (
SQL_TEXT TEXT,
HINT_TEXT TEXT,
NAME VARCHAR(128),
DESCRIPTION VARCHAR(256),
VALIDATE BOOLEAN,
FUZZY BOOLEAN
)

功能说明:
对指定 SQL 增加 HINT。
参数说明:

SQL_TEXT: 要指定 HINT 的 SQL 语句
HINT_TEXT: 要为 SQL 指定的 HINT
NAME: 可以指定名称,或者设为 NULL 让系统自动创建名称
DESCRIPTION: 对规则的详细描述,可为 NULL
VALIDATA: 规则是否生效,可为 NULL,则为默认值 TRUE
FUZZY: SQL 的匹配规则为精准匹配或模糊匹配。值为 TRUE 或 NULL 时,模糊
匹配;值为 FALSE 或缺省时,精准匹配
返回值:
执行成功返回名称,执行失败报错误信息

下面举例说明:
为以下语句指定 HINT 为 MMT_SIZE = 4 的精准匹配规则:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test
function of injecting hint', TRUE);

或者:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test
function of injecting hint', TRUE, FALSE);

为以下语句指定 HINT 为 MMT_SIZE = 4 的模糊匹配规则:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test
function of injecting hint', TRUE, TRUE);

或者:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test
function of injecting hint', TRUE, NULL);

4、删除绑定hint
SF_DEINJECT_HINT
定义:

INT
SF_DEINJECT_HINT (
NAME VARCHAR(128)
)

功能说明:
对指定 SQL 撤回已增加的 HINT
参数说明:
NAME: 要删除的规则名称
返回值:
执行成功返回 0,执行失败返回错误码

举例说明:
为 SQL 撤回已指定的 HINT:

SF_DEINJECT_HINT('TEST_INJECT');

5、修改已绑定HINT
SF_ALTER_HINT
定义:

INT
SF_ALTER_HINT (
NAME VARCHAR(128),
ATTRIBUTE_NAME VARCHAR(12),
ATTRIBUTE_VALUE VARCHAR(256)
)

功能说明:
修改已指定 HINT 的规则属性
参数说明:

NAME: 要修改的规则名称
ATTRIBUTE_NAME:要修改的属性名
STATUS:规则是否生效,取值 ENABLED/DISABLED
NAME:规则名称
DESCRIPTION:规则的详细描述
ATTRIBUTE_VALUE:设置的属性值
返回值:
执行成功返回 0,执行失败返回错误码

举例说明:
让已指定的 HINT 的规则失效:

SF_ALTER_HINT('TEST_INJECT', 'STATUS', 'DISABLED');

更多资讯请上达梦技术社区了解:https://eco.dameng.com

最后

以上就是有魅力小土豆为你收集整理的达梦为 SQL 指定 HINT的全部内容,希望文章能够帮你解决达梦为 SQL 指定 HINT所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部