跳到主要内容

CREATE INDEX 语句

CREATE INDEX

CREATE INDEX 语句会在指定表的指定列上创建索引。

示例

films 表的 id 列上创建唯一索引 films_id_idx

CREATE UNIQUE INDEX films_id_idx ON films (id);

filmsrevenue 列上创建允许重复值的索引 s_idx

CREATE INDEX s_idx ON films (revenue);

仅在索引不存在时创建:

CREATE INDEX IF NOT EXISTS s_idx ON films (revenue);

当前 CREATE INDEX IF NOT EXISTS 暂无“提前退出”机制:它会先尝试创建索引,再在提交到存储前检查是否已存在。因此相比其他可提前终止的 IF NOT EXISTS 语句,耗时可能更长。

genreyear 列上创建复合索引 gy_idx

CREATE INDEX gy_idx ON films (genre, year);

integers 表中列 jk 之和的表达式上创建索引 i_index

CREATE INDEX i_index ON integers ((j + k));

参数

名称描述
UNIQUE在创建索引时(若表内已有数据)以及每次新增数据时检查重复值。若插入或更新会导致重复条目,则报错。
name要创建的索引名称。
table要创建索引的表名。
column要创建索引的列名。
expression基于表中一个或多个列的表达式。通常需按语法用括号包裹;若表达式是函数调用形式,可省略括号。
index type指定索引类型,见 Indexes。可选。
option索引选项,可为布尔真值形式(如 is_cool)或键值对(如 my_option = 2)。可选。

语法

DROP INDEX

DROP INDEX 用于删除数据库中已有索引。

示例

删除索引 title_idx

DROP INDEX title_idx;

参数

名称描述
IF EXISTS若索引不存在则不报错。
name要删除的索引名称。

语法

限制

CREATE INDEX 子句不支持 OR REPLACE 修饰符。