暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

南大通用GBase8s 常用SQL语句(五十七)

晚安的星星云 2022-01-19
440

1.1 CREATE OPCLASS 语句

使用 CREATE OPCLASS 语句为辅助存取方法创建运算符类

该语句是 SQL ANSI/ISO 标准的扩展。

语法

 

元素

描述

限制

语法

opclass

在此处声明的新的运算符类的名称

在数据库内的运算符类中必须是唯一的

标识符

sec_acc_method

新的运算符类与其关联的辅助存取方法

必须已经存在且必须 sysams 表中注册

标识符

support_function

辅助存取方法需要的支持函数

必须以存取方法所期望的顺序列出

标识符

用法

运算符类是支持用于查询优化和构建索引的与辅助存取方法的运算符集合。辅助存取方法(有时称为 索引存取方法)是构建、存取和操作索引结构(如 B-tree 、R-tree 或 DataBlade 模块提供的索引结构)的一组数据库服务器函数。

数据库服务器提供 B-tree 和 R-tree 辅助存取方法。更多关于 btree 辅助存取方法的信息,请参阅 缺省运算符类 。

当需要下列之一时定义一个新的运算符类:

索引为数据使用与缺省运算符类提供的顺序不同的顺序

与任何现有运算符类不同的一个运算符集合,这些运算符类与特殊的辅助存取方法相关联

如果您包含了可选的 IF NOT EXISTS 关键字,且指定名称的运算符类已经当前数据库中注册过,则数据库服务器不采取任何行动(而非向应用程序发送异常)。

必须具有 Resource 权限或者必须是 DBA 才可创建运算符类。运算符类的实际名称是 SQL 标识符。当创建运算符类时,opclass 名称必须在数据库内是唯一的。

在兼容 ANSI 的数据库中创建运算符类时,owner.opclass 组合必须在数据库中是唯一的。所有者名称是区分大小写的。如果不在 owner 名称旁边添加引号(或者设置 ANSIOWNER 环境变量),则运算符类索引者名称以大写字母存储。

以下 CREATE OPCLASS 语句为 btree 辅助存取方法创建称为 abs_btree_ops 的新的运算符类:

CREATE OPCLASS abs_btree_ops FOR btree

STRATEGIES (abs_lt, abs_lte, abs_eq, abs_gte, abs_gt)

 SUPPORT (abs_cmp);

一个运算符类有两种运算符类函数:

策略函数

在 CREATE OPCLASSS 语句的 STRATEGY 子句中指定运算符类的策略函数。在先前的 CREATE OPCLASS 代码示例中,abs_btree_ops 运算符类有 5 个策略函数。

支持函数

在 SUPPORT 子句中指定运算符类的支持函数。在先前的 CREATE OPCLASS 代码示例中,abs_btree_ops 运算符类有 1 个支持函数。

STRATEGIES 子句

策略函数是用户可以在 DML 语句内调用以对指定数据类型起作用的函数。查询优化器使用策略函数确定给定的索引是否能够用以处理查询。

如果查询包含 UDF 或某个有索引的列,并且如果查询中的限制操作符与 STRATEGIES 子句中的任何函数都匹配,则查询优化器将考虑使用此索引进行查询。更多查询计划的信息,请参阅 GBase 8s 性能指南

当创建新的运算符类时,STRATEGIES 子句将为辅助存取方法标识策略函数。每个策略规范都列出策略函数的名称(以及可选的,它的参数的数据类型)。必须以辅助存取方法所期望的顺序列出这些函数。关于 B-tree 索引的和 R-tree 索引的缺省运算符类的策略运算符特顺序,请参阅 GBase 8s 用户定义的例程和数据类型开发者指南

策略规范

STRATEGIES 关键字引入一个逗号分隔的,新运算符类的函数名或函数特征符列表。此列表中的每个元素被称为策略规范并有如下的语法:

策略规范

 

元素

描述

限制

语法

input_type 

策略函数的输入参数的数据类型,您要为该策略函数使用特定的辅助存取方法

策略函数接受两个输入参数,并且可以有一个可选的输入参数

数据类型 

output_type 

策略函数的可选输出参数的数据类型

副作用索引的可选输出参数

数据类型 

strategy_function 

与指定的运算符类相关联的策略函数

必须以指定的辅助存取方法所期望的顺序列出

标识符 

每个策略函数都是一个外部函数。CREATE OPCLASS 语句不验证您指定名称的用户定义的函数是否存在。但是,对于要使用策略函数的辅助存取方法,外部函数必须:

在共享库中编译

用 CREATE FUNCTION 语句在数据库中注册

(可选)除了策略函数名称外还可以指定其特征。策略函数需要两个输入参数和一个可选的输出参数。要指定函数特征符,请指定:

为策略函数的两个输入参数的每一个都指定一个输入数据类型,从而该策略函数可使用它们

(可选)为策略函数的输出参数指定一个输出数据类型 

可以指定 UDT 和内置数据类型。如果不指定函数特征符,则数据库服务器假设每个策略函数采用两个相同数据类型的参数并返回一个 BOOLEAN 值。

对边界效果数据的索引

边界效果数据是策略函数在包含该策略函数的查询后返回的附加值。例如,图像 DataBlade 模块可能使用模糊索引搜索图像数据。索引根据图像与搜索条件的接近程序对它们进行排序。数据库服务器返回等级值作为对于合格图像的边界效果数据 。

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论