SQL - 索引



SQL 索引

SQL 索引是用于加速数据检索过程的特殊查找表。它们包含指向存储在数据库中的数据的指针,这使得更容易在数据库表中找到所需的数据记录。

SQL 索引的工作原理类似于书籍或期刊的索引。

虽然索引可以加快数据检索查询(SELECT 语句)的性能,但会降低数据输入查询(UPDATE 和 INSERT 语句)的性能。但是,这些索引对数据没有任何影响。

SQL 索引需要在数据库中拥有自己的存储空间。尽管如此,用户无法物理地查看它们,因为它们只是性能工具。

CREATE INDEX 语句

可以使用CREATE INDEX语句在 SQL 中创建索引。此语句允许您命名索引,指定要索引的表和列或列,并指示索引是按升序还是降序排列。

最好在经常查询以进行数据检索的大表的列上创建索引。

语法

CREATE INDEX的基本语法如下所示:

CREATE INDEX index_name ON table_name;

索引类型

可以使用 CREATE INDEX 语句创建各种类型的索引。他们是

  • 唯一索引

  • 单列索引

  • 组合索引

  • 隐式索引

唯一索引

唯一索引不仅用于性能,还用于数据完整性。唯一索引不允许将任何重复值插入表中。当它们应用于数据库表时,主键和唯一约束会自动创建它,以防止用户将重复值插入已索引的表列中。基本语法如下所示。

CREATE UNIQUE INDEX index_name
on table_name (column_name);

单列索引

单列索引仅在一个表列上创建。语法如下所示。

CREATE INDEX index_name
ON table_name (column_name);

组合索引

组合索引是在表的两个或多个列上创建的索引。其基本语法如下所示。

CREATE INDEX index_name
on table_name (column1, column2);

隐式索引

隐式索引是在创建对象时由数据库服务器自动创建的索引。例如,当在 MySQL 数据库中的表上创建主键和唯一约束时,会自动创建索引。

DROP INDEX 语句

可以使用 SQL DROP 命令删除索引。删除索引会影响数据库中的查询性能。因此,仅在绝对必要时才需要删除索引。

基本语法如下所示:

DROP INDEX index_name;

何时应避免使用索引?

尽管索引旨在增强数据库的性能,但在某些情况下应避免使用它们。

以下指南指示何时应重新考虑使用索引。

  • 不应在小型表上使用索引。

  • 不应将其用于经常进行大量批量更新或插入操作的表。

  • 不应在包含大量 NULL 值的列上使用索引。

  • 不应为经常被操作的列建立索引。

广告