使用 CREATE INDEX 语句的 DISTINCT 或 UNIQUE 和 CLUSTER 选项指定索引的特征。
如果您未指定 UNIQUE 或 DISTINCT 关键字,则该索引在被索引的列或者被索引的列集上允许重复的值。
带有唯一索引的列至多可有一个 NULL 值。
您不能为 UNIQUE 索引键指定 R-tree 辅助存取方法。
CREATE UNIQUE INDEX c_num_ix ON customer (customer_num);
CREATE DISTINCT INDEX c_num_ix ON customer (customer_num);
两个示例中的索引维持在升序中,这是缺省顺序。下一个示例在同一列上定义了一个名为 c_num_desc_ix 的唯一降序索引:
CREATE UNIQUE INDEX c_num_desc_ix ON customer (customer_num DESC);
您也可以通过创建带有 CREATE TABLE 的唯一约束或 ALTER TABLE 语句 的 ADD CONSTRAINT 子句来阻止列或列组中的复制。
在一个 NLSCASE INSENSITIVE 数据库中,NCHAR 和 NVARCHAR 数据类型列上的索引忽视字母大小写差异,以致于数据库服务器将由相同字母序列组成的不同大小写的字符串视为重复值。如果新行中列值与同一表中现有行同一列的值的不同之处仅在于大小写,则您不能向具有 NCHAR 或 NVARCHAR 列并在其列定义了唯一约束或唯一索引的表中插入行或更改该表的行。有关带有 NLSCASE INSENSITIVE 属性的数据库的更多信息,请参阅 在 NLSCASE INSENSITIVE 数据库中重复的行 和 在区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式 。
您不能在同一语句中同时指定 CLUSTER 选项和 ONLINE 关键字。此外,一些辅助存取方法(如 R-tree )不支持集群。在您为索引指定 CLUSTER 之前,请确保它使用支持集群的存取方法。
CREATE CLUSTER INDEX c_clust_ix ON customer (zipcode);
该语句在 customer 表上创建了一个索引,并按行的邮政编码对行做物理的升序(缺省的)排序。
如果指定了 CLUSTER 选项并且数据中存在分片,则仅在每个分片内集群数据值,而非在整个表全局集群数据值。
您不能在树索引的集群中使用 CLUSTER 选项。