#CREATE INDEX

# 通用描述

CREATE INDEX用于在指定的表上创建一个索引对象。

同一用户的不同表之间索引可以重名,但同一个表的索引名称必须唯一。

UNIQUE INDEX不允许设置为DESC(降序)。

# 语句定义

create index::=

syntax
CREATE UNIQUE INDEX index_name index_type ON schema . table_name ( index_expr DESC ASC , index_expr DESC ASC ) index_option index_type

index_expr::=

syntax
column_name column_expression

index_option::=

syntax
KEY_BLOCK_SIZE = value ALGORITHM = DEFAULT INPLACE COPY LOCK = DEFAULT NONE SHARED EXCLUSIVE COMMENT string WITH PARSER parser_name

index_type::=

syntax
USING BTREE HASH

# UNIQUE

该语句用于指定创建的索引为唯一索引,即索引列字段上的数值唯一。

在mysql语法模式下,对于唯一索引的列值是NULL时不做唯一性检查。因此在复合唯一索引中如果部分索引列存在NULL值,例如两个(1, NULL)不会报唯一索引冲突,允许创建唯一索引。

# index_expr

指定索引所基于的列或列表达式,多项组合指定时以,分隔。

mysql模式仅支持基于列创建BTree索引,当基于列创建HASH索引或创建函数索引时,将按照yashan模式进行解析执行,数据库正常提供服务。详细的语法要求可参考基于yashan模式CREATE INDEX

# index_option

指定索引相关属性选项,包括KEY_BLOCK_SIZE、ALGORITHM、LOCK等,仅用于兼容,无实际含义。

# index_type

指定索引存储类型,语法上支持BTREE和HASH,实际使用过程中仅支持BTREE。

示例(单机HEAP表)

CREATE UNIQUE INDEX idx_orders_info_1 ON orders_info (id, area);
--或者带USING BTREE
CREATE INDEX idx_orders_info_1 USING BTREE ON orders_info (id, area);
--或者USING BTREE放在后面
CREATE INDEX idx_orders_info_1 ON orders_info (id, area) USING BTREE;
pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流