无涯教程-SQLite - Indexes(索引)

88 阅读1分钟

索引有助于加快SELECT查询和WHERE子句的查询速度,但它影响UPDATE和INSERT语句的执行速度。

CREATE INDEX 命令

以下是 CREATE INDEX 的基本语法。

CREATE INDEX index_name ON table_name;

单列索引

单列索引是仅基于一个表列创建的索引。基本语法如下-

CREATE INDEX index_name
ON table_name (column_name);

唯一索引

唯一索引不仅用于提高性能,而且还用于数据完整性,唯一索引不允许将任何重复的值插入表中,基本语法如下-

CREATE UNIQUE INDEX index_name
on table_name (column_name);

复合索引

复合索引是表的两个或多个列上的索引,基本语法如下-

CREATE INDEX index_name
on table_name (column1, column2);

如果仅使用一列,则应选择单列索引。如果在WHERE子句中经常使用两个或多个列作为过滤器,则复合索引将是最佳选择。

隐式索引

隐式索引是在创建对象时由数据库服务器自动创建的索引。

以下是一个示例,其中无涯教程将在COMPANY表中为薪水列创建索引-

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

现在,让无涯教程使用 .indices 命令列出COMPANY表中所有可用的索引,如下所示-

sqlite> .indices COMPANY

这将产生以下输出,其中 sqlite_autoindex_COMPANY_1 是隐式索引,该隐式索引是在创建表本身时创建的。

salary_index
sqlite_autoindex_COMPANY_1

您可以列出所有索引数据库范围,如下所示:

sqlite> SELECT * FROM sqlite_master WHERE type = index;

DROP INDEX命令

可以使用SQLite DROP 命令删除索引,以下是基本语法如下-

DROP INDEX index_name;

您可以使用以下语句删除以前创建的索引。

sqlite> DROP INDEX salary_index;

参考链接

www.learnfk.com/sqlite/sqli…