将列作为索引键的限制
以下限制应用到 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语句(五十一)相关推荐

  1. 南大通用GBase8s 常用SQL语句(八十一)

    南大通用GBase8s 常用SQL语句(八十一) 使用 REMAINDER 关键字 使用 REMAINDER 关键字来指定存储超出指定表达式的有效值的存储空间.如果不指定 remainder ,并且在 ...

  2. 南大通用GBase8s 常用SQL语句(八十三)

    南大通用GBase8s 常用SQL语句(八十三) Interval fragment 子句 使用 Interval Fragment 子句存储通过一个或多个计算为数字或 INTERVAL 数据类型的范 ...

  3. 南大通用GBase8s 常用SQL语句(八十)

    南大通用GBase8s 常用SQL语句(八十) FRAGMENT BY 子句 使用 FRAGMENT BY 子句创建分片表并指定它的存储分布方案.PARTITION BY 关键字是 FRAGMENT ...

  4. 南大通用GBase8s 常用SQL语句(四十)

    南大通用GBase8s 常用SQL语句(四十) DATAFILES 子句 DATAFILES 子句指定当您使用外部表时打开的操作系统文件或管道. DATAFILES 子句 元素 描述 限制 语法 fi ...

  5. 南大通用GBase8s 常用SQL语句(261)

    使用 Cursor Stability 隔离级别 使用 Cursor Stability 选项来在获取的行上放置共享锁,当您获取另一行或关闭该游标时,将其释放.另一进程还可在同一行上放置共享锁,但没有 ...

  6. 南大通用GBase8s 常用SQL语句(124)

    DROP INDEX 语句 使用 DROP INDEX 语句删除索引. 该语句是 SQL ANSI/ISO 标准的扩展. 语法 元素 描述 限制 语法 index 要删除的索引的名称 必须存在于当前数 ...

  7. 南大通用GBase8s 常用SQL语句(100)

    用于插入的 REFERENCING 子句 Insert 触发器的 REFERENCING 子句可以为列中要插入的值声明相关名称. 用于插入的 REFERENCING 子句 元素 描述 限制 语法 co ...

  8. 南大通用GBase8s 常用SQL语句(257)

    完整连接级别设置和输出示例 SET EXPLAIN 语句支持完整连接级别设置. SET EXPLAIN 语句支持完整连接级别设置.这意味着在连接时将本地会话环境中的值传播到所有下列类型的新的或恢复的事 ...

  9. 南大通用GBase8s 常用SQL语句(108)

    CREATE VIEW 语句 使用 CREATE VIEW 语句创建新的视图,该视图基于驻留在数据库(或本地数据库服务器或不同的数据库服务器中的另一个数据库)中的一个或多个现有表和视图. 语法 元素 ...

  10. 南大通用GBase8s 常用SQL语句(259)

    SET ISOLATION 语句 使用 SET ISOLATION 语句来定义在尝试同时地访问相同行的进程之中的并发程度. 此语句是对 SQL 的 ANSI/ISO 标准的扩展. 语法 用法 SET ...

最新文章

  1. 【UVA624 01背包中的路径问题】
  2. grub linux rootfs,rootfs文件系统(笔记)(草稿)
  3. 我的世界java服务器刷_一个教程, 叫你如何在服务器刷op
  4. flutter tab选项卡appbar下的选项卡
  5. 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(2)
  6. 在Unity3D中实现安卓平台的本地通知推送
  7. 【重学计算机】计组D1章:计算机系统概论
  8. MySQL安装详细图解
  9. iPhone屏幕尺寸、分辨率及适配
  10. 202000 - AlphaGo如何进化为孤独求败?
  11. 服务器备案问题解决思考?
  12. 万物可运算——运算符重载(四)
  13. iOS 15.3+ SwiftUI中List子项目禁止被删除但头部仍显示删除按钮的解决
  14. sqlserver 取余和取整
  15. jQuery属性遍历、HTML操作
  16. 西工大计算机学院保研人数,陕西多所大学保研率超20%,西北工业大学27%,推免999人...
  17. 有哪些强大好用的音频格式转换软件?
  18. “我们的开源项目”发起人、息壤开源社区共同创始人——程旭文专访
  19. 报错:无法嵌入来自程序集“e:\Microsoft.Office.Interop.Word.dll”的互操作类型,因为它缺少“ImportedFromTypeLibAttribute”特性或“Prim
  20. 斐讯k3安装MySQL_PHICOMM斐讯K3无线路由器快速配置安装教程

热门文章

  1. 有史以来最牛的一张程序员职业路线图!
  2. ownCloud/Nextcloud OCC命令行工具详解
  3. C#+ArcGIS Engine 获取地图中选中的要素
  4. 光学绝对编码器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  5. 华为8u服务器性能,8U大型刀片机 华为 E6000H服务器促销
  6. 搭建企业内部知识库,从知识管理做起
  7. MSP430F4250 AD解读
  8. 别人家都装了吸顶音响,你家还没装?OUT了
  9. 用计算机接入gps秒脉冲信号实现精确时间对准的方法,基于GPS秒脉冲的高精度校时实现方法与流程...
  10. Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-李宁-专题视频课程