南大通用GBase8s 常用SQL语句(五十一)
将列作为索引键的限制
以下限制应用到 CREATE INDEX 语句参考的索引键规范的任何列或列列表:
所有列必须存在并必须位于创建该索引的表中。
表必须存在于当前数据库中,且不能是 CREATE EXTERNAL TABLE 语句定义的对象。
该列的数据类型不能是集合数据类型。
列的最大值和所有列的总宽度的最大值取决于数据库服务器的页大小。请参阅 创建复合索引。
您无法对在其上已有唯一约束的列或者列列表添加升序索引。请参阅 使用 ASC 和 DESC 排序顺序选项 。
您无法对有主键约束的列或者列列表添加唯一索引。原因是:将列或列列表定义为主键将使数据库服务器在列或列列表上创建唯一的内部索引;你不能使用 CREATE INDEX 语句在此列或列列表上定义另一个唯一索引。
您可在同一列或同一列组上创建的索引数是受限制的。请参阅 列组上索引数目的限制。
有关应用到指定为函数型索引的参数的列的其它索引键的限制,请参阅 使用函数的返回值作为索引键 。
使用函数的返回值作为索引键
函数型索引是对指定函数返回的值建立的索引,而非对列的值建立索引。例如,以下语句在将函数 Area( ) 返回的值作为键使用的表 zones 上创建函数型索引:
CREATE INDEX zone_func_ind ON zones (Area(length,width));
可在 SPL 例程中创建函数型索引。也可在不返回大对象的非变量用户定义的函数上创建索引。
函数型索引可以是 B-tree 索引、R-tree 索引或者用户定义的辅助存取方法。
函数返回的值可以是索引键,如上例所示,或者可以是其它键部分是列值、部分列值或者是其它函数索引的返回值的复合索引(有关更多信息,请参阅 创建复合索引)。
重要: 数据库服务器在定义函数型索引的用户定义例程(UDR)上施加以下限制:
参数不能是集合数据类型(LIST 、MULTISET 或 SET)列的名称。
此函数不能返回 BLOB 、BYTE 、CLOB 和 TEXT 数据类型的大对象。
此函数不能是 VARIANT 函数。
此函数不能包含任何 SQL 的 DML 语句。
当您创建函数型索引时,ONLINE 关键字无效;请参阅 CREATE INDEX 的 ONLINE 关键字 。
此函数必须是用户定义函数。您不能在任何 SQL 的内置函数上创建函数型索引。
然而,除了以上最后一条限制,您可以在调用非变量内置 SQL 函数的用户定义函数上创建函数型索引以,以致于内置函数返回的值是函数型索引的索引键。(即,创建调用并返回 SQL 内置函数的值的 SPL 包装器,然后在此用户定义的 SPL 函数上定义函数型索引。)
创建复合索引
简单索引在其索引键规范中仅列出一个列(或者仅一个函数,参数列表必须是一列或多列列表)。其它索引是复合索引。您应当按照从最常用到最少用的顺序在符合索引中列出这些列。
如果您使用 SET COLLATION 指定非缺省的语言环境的排列顺序,则可以使用不同的对照在同一列集合上创建多个索引。(类似索引仅在 NCHAR 或 NVARCHAR 列上使用。)
以下示例使用 stock 表的 stock_num 和 manu_code 列创建复合索引:
CREATE UNIQUE INDEX st_man_ix ON stock (stock_num, manu_code);
UNIQUE 关键字阻止 stock_num 和 manu_code 的给出组合的任何复制。缺省情况下索引是升序的。
您可在一个复合索引中最多包含 16 列。单个组合索引中的所有已建立索引的列的总宽度不能超过 380 字节。
索引键部件是表中的一列或者一个或多个列上用户定义的函数的结果。复合索引可最多有 16 键部分(为列时),或者最多 341 键部分(为 UDR 返回的值时)。此限制是语言相关的,并应用到 SPL 或 Java™ 所写的 UDR ;基于 C 语言 UDR 的函数型索引可最多有 102 个键部分。复合索引可将任一以下项作为索引键:
一列或多列
用户定义的函数返回的一个或多个值(称为函数型索引)。
复合索引的索引键部分可以是列和用户定义函数的组合。
对于缺省 2 千字节页大小的 dbspace ,除了 GBase 8s 的函数型索引(它依赖的语言的限制已在本节的前面描述过),单个 CREATE INDEX 语句中所有索引的列的总宽度不能超过 387 字节。 对于 dbspace 中最大大小大于 2 千字节,请参阅 索引键规范 。
无论该索引是否直接基于表中的列值或者将列值作为参数的函数上,索引键的最大大小仅取决于页大小。Dbspace 中函数型索引的最大索引键大小与列索引一样都大于 2 千字节,列索引和函数型索引的唯一不同是键部件的数量。基于列的索引可以有多于 16 个键部件,但是函数型索引具有不同的依赖于语言限制的键部件。对于给出的页大小,基于列的索引和函数索引最大索引键大小都一样。
使用 ASC 和 DESC 排序顺序选项
ASC 选项指定了索引维持在升序中; 这是缺省顺序。DESC 选项可以指定以降序顺序保存的索引。这些 ASC 和 DESC 选项仅限于 B-trees 有效。
唯一约束在排序顺序选项上的影响
当列或列列表在 CREATE TABLE 或 ALTER TABLE 语句中定义为唯一时,数据库服务器通过创建唯一升序索引实施 UNIQUE CONSTRAINT 。因此,您无法使用 CREATE INDEX 语句来将升序索引添加到已经定义为唯一的列或列列表上。
然而,您可以在这样的列上创建降序索引,并且可以将这些列包含在不同组合的组合升序索引中。例如,以下序列的语句是有效的:
CREATE TABLE customer (
customer_num SERIAL(101) UNIQUE,
fname CHAR(15),
lname CHAR(15),
company CHAR(20),
address1 CHAR(20),
address2 CHAR(20),
city CHAR(15),
state CHAR(2),
zipcode CHAR(5),
phone CHAR(18)
);
CREATE INDEX c_temp1 ON customer (customer_num DESC);CREATE INDEX c_temp2 ON customer (customer_num, zipcode);
在此示例中,在 customer_num 列上放置了一个唯一约束。第一个 CREATE INDEX 语句在 customer_num 列上放置一个按降序顺序排序的索引。第二个 CREATE INDEX 将 customer_num 列作为复合索引的一部分包含。关于复合索引的更多信息,请参阅 创建复合索引 。
南大通用GBase8s 常用SQL语句(五十一)相关推荐
- 南大通用GBase8s 常用SQL语句(八十一)
南大通用GBase8s 常用SQL语句(八十一) 使用 REMAINDER 关键字 使用 REMAINDER 关键字来指定存储超出指定表达式的有效值的存储空间.如果不指定 remainder ,并且在 ...
- 南大通用GBase8s 常用SQL语句(八十三)
南大通用GBase8s 常用SQL语句(八十三) Interval fragment 子句 使用 Interval Fragment 子句存储通过一个或多个计算为数字或 INTERVAL 数据类型的范 ...
- 南大通用GBase8s 常用SQL语句(八十)
南大通用GBase8s 常用SQL语句(八十) FRAGMENT BY 子句 使用 FRAGMENT BY 子句创建分片表并指定它的存储分布方案.PARTITION BY 关键字是 FRAGMENT ...
- 南大通用GBase8s 常用SQL语句(四十)
南大通用GBase8s 常用SQL语句(四十) DATAFILES 子句 DATAFILES 子句指定当您使用外部表时打开的操作系统文件或管道. DATAFILES 子句 元素 描述 限制 语法 fi ...
- 南大通用GBase8s 常用SQL语句(261)
使用 Cursor Stability 隔离级别 使用 Cursor Stability 选项来在获取的行上放置共享锁,当您获取另一行或关闭该游标时,将其释放.另一进程还可在同一行上放置共享锁,但没有 ...
- 南大通用GBase8s 常用SQL语句(124)
DROP INDEX 语句 使用 DROP INDEX 语句删除索引. 该语句是 SQL ANSI/ISO 标准的扩展. 语法 元素 描述 限制 语法 index 要删除的索引的名称 必须存在于当前数 ...
- 南大通用GBase8s 常用SQL语句(100)
用于插入的 REFERENCING 子句 Insert 触发器的 REFERENCING 子句可以为列中要插入的值声明相关名称. 用于插入的 REFERENCING 子句 元素 描述 限制 语法 co ...
- 南大通用GBase8s 常用SQL语句(257)
完整连接级别设置和输出示例 SET EXPLAIN 语句支持完整连接级别设置. SET EXPLAIN 语句支持完整连接级别设置.这意味着在连接时将本地会话环境中的值传播到所有下列类型的新的或恢复的事 ...
- 南大通用GBase8s 常用SQL语句(108)
CREATE VIEW 语句 使用 CREATE VIEW 语句创建新的视图,该视图基于驻留在数据库(或本地数据库服务器或不同的数据库服务器中的另一个数据库)中的一个或多个现有表和视图. 语法 元素 ...
- 南大通用GBase8s 常用SQL语句(259)
SET ISOLATION 语句 使用 SET ISOLATION 语句来定义在尝试同时地访问相同行的进程之中的并发程度. 此语句是对 SQL 的 ANSI/ISO 标准的扩展. 语法 用法 SET ...
最新文章
- 北大女生拿下阿里数学预赛第一名!决赛入围率不到1%,最小晋级选手只有14岁...
- linux上传文件操作,每天一个linux命令(文件上传下载文件操作):【转载】gzip命令(示例代码)...
- 日期时间选择器-jeDate日期控件
- SpringCloud框架搭建+实际例子+讲解+系列五
- Python中lambda表达式的语法与应用
- 嵌入式Linux开发环境搭建实验
- springboot房屋租赁管理系统
- Moore-Penrose广义逆矩阵
- Linux 修改 host
- Golang go-svc包源码分析
- anaconda必须安装在c盘吗_安装anaconda
- iOS开发面试只需知道这些,技术基本通关!(网络篇)
- 算法题 - 数字游戏问题 - Python
- 外箱条码标签如何用条码标签编辑软件制作?
- 2023年北京科技大学MTI英语翻译硕士专业考研成功经验
- js中自己实现bind方法及详解
- mysql contact 函数_mysql concat函数用法举例
- 五天,上线一个自己的聚合导航,很酷!
- 【linux】持续集成与持续发布CICD
- xilinx的DDR IP中的自刷新功能