OceanBase 与查询策略相关的 Hint
USE_JIT Hint
USE_JIT
Hint 指示服务器在执行 SQL 语句时强制使用 JIT 模式编译执行表达式。
以下是 USE_JIT
Hint 的语法:
/*+ USE_JIT */
示例如下:
SELECT /*+ USE_JIT*/ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001;
GROUP BY e.department_id;
NO_USE_JIT Hint
NO_USE_JIT
Hint 指示服务器在执行 SQL 语句时避免使用 JIT 模式编译执行表达式。
以下是 NO_USE_JIT
Hint 的语法:
/*+ NO_USE_JIT*/
示例如下:
SELECT /*+NO_USE_JIT*/ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001;
GROUP BY e.department_id;
USE_HASH_AGGREGATION Hint
USE_HASH_AGGREGATION
Hint 指示优化器在生成计划时强制使用 HASH 聚合算法运行该 SQL 语句。
以下是 USE_HASH_AGGREGATION
Hint 的语法:
/*+ USE_HASH_AGGREGATION */
示例如下:
SELECT /*+ USE_HASH_AGGREGATION */ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001;
GROUP BY e.department_id;
NO_USE_HASH_AGGREGATION Hint
NO_USE_HASH_AGGREGATION
Hint 指示优化器在执行 SQL 语句时避免使用 HASH 聚合算法运行该语句。
以下是 NO_USE_HASH_AGGREGATION
Hint 的语法:
/*+ NO_USE_HASH_AGGREGATION */
示例如下:
SELECT /*+ NO_USE_HASH_AGGREGATION */ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001;
GROUP BY e.department_id;
USE_LATE_MATERIALIZATION Hint
USE_LATE_MATERIALIZATION
Hint 指示优化器延迟物化视图。
以下是 USE_LATE_MATERIALIZATION
Hint 的语法:
/*+ USE_LATE_MATERIALIZATION */
示例如下:
SELECT /*+ USE_LATE_MATERIALIZATION*/ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001;
GROUP BY e.department_id;
NO_USE_LATE_MATERIALIZATION Hint
NO_USE_LATE_MATERIALIZATION
Hint 指示优化器禁止延迟物化视图。
以下是 NO_USE_LATE_MATERIALIZATION
Hint 的语法:
/*+ NO_USE_LATE_MATERIALIZATION */
示例如下:
SELECT /*+ NO_USE_LATE_MATERIALIZATION*/ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001;
GROUP BY e.department_id;
USE_NL_MATERIALIZATION Hint
USE_NL_MATERIALIZATION
Hint 强制指示优化器指定表为内部表(子树)时生成一个物化算子来缓存数据。
以下是 USE_NL_MATERIALIZATION
Hint 的语法:
/*+ USE_NL_MATERIALIZATION ( [ @ queryblock ] tablespec [ tablespec ]... ) */
示例如下:
SELECT /*+ USE_NL_MATERIALIZATION(departments) */ *
FROM employees, departments
WHERE employees.department_id = departments.department_id;
NO_USE_NL_MATERIALIZATION Hint
NO_USE_NL_MATERIALIZATION
Hint 强制指示优化器在指定表为内部表(子树)时避免生成一个物化算子来缓存数据。
以下是 NO_USE_NL_MATERIALIZATION
Hint 的语法:
/*+ NO_USE_NL_MATERIALIZATION ( [ @ queryblock ] tablespec [ tablespec ]... ) */
示例如下:
SELECT /*+ NO_USE_NL_MATERIALIZATION(departments) */ *
FROM employees, departments
WHERE employees.department_id = departments.department_id;
更多建议: