CREATE INDEX 语句
CREATE INDEX
CREATE INDEX 语句会在指定表的指定列上创建索引。
示例
在 films 表的 id 列上创建唯一索引 films_id_idx:
CREATE UNIQUE INDEX films_id_idx ON films (id);
在 films 表 revenue 列上创建允许重复值的索引 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语句,耗时可能更长。
在 genre 与 year 列上创建复合索引 gy_idx:
CREATE INDEX gy_idx ON films (genre, year);
在 integers 表中列 j 与 k 之和的表达式上创建索引 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 修饰符。