codecamp

OceanBase 与访问路径相关的 Hint

INDEX Hint

INDEX Hint 指示优化器对指定的表使用索引扫描。您可以将 ​INDEX Hint​ 用于基于函数、域、B - 树、位图和位图连接的索引。

以下是​INDEX Hint ​的语法:

/*+ INDEX ( [ @ queryblock ] tablespec [ indexspec [ indexspec ]... ] ) */

Hint 的行为取决于​indexspec​ 规范:

  • 如果 INDEX Hint 指定了一个单个可用索引,则数据库将对该索引执行扫描。优化器不考虑全表扫描或表上另一个索引的扫描。
  • 如果 ​INDEX​Hint 指定了可用索引的列表,那么优化器将考虑扫描列表中每个索引的成本,然后以最低的成本执行索引扫描。如果数据库从这个列表中扫描多个索引并合的访问路径成本最低,数据库将选用这种扫描方案。数据库不考虑对没有在列表中的索引进行全表扫描或扫描。
  • 如果​INDEX​Hint 没有指定具体的索引,那么优化器将考虑表上每个可用索引的扫描成本,然后以最低的成本执行索引扫描。如果数据库扫描多个索引并合的访问路径成本最低,数据库将选用这种扫描方案。优化器不考虑全表扫描。

示例如下:

SELECT /*+ INDEX (employees emp_department_ix)*/ employee_id, department_id
  FROM employees 
  WHERE department_id > 50;

FULL Hint

FULL​ Hint 指示优化器对指定的表执行全表扫描。

以下是 ​FULL​ Hint 的语法:

/*+ FULL ( [ @ queryblock ] tablespec ) */

示例如下:

SELECT /*+ FULL(e) */ employee_id, last_name
  FROM hr.employees e 
  WHERE last_name LIKE :b1;

数据库对表 employees 执行一次完整的表扫描来执行这条语句,即使有一个由 ​WHERE​ 子句中的条件提供的索引在列 last_name 上。

在 ​FROM​ 子句中,表 employees 有个别名 e,因此 Hint 必须根据表的别名而不是名称来引用该表。即使在 ​FROM​ 子句中指定了 Schema 名,也不要在 Hint 中引用它们。

OceanBase Hint概述
OceanBase 与联接顺序相关的 Hint
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }