Sql 简明教程

SQL - Indexes

The SQL Indexes

SQL Indexes 是特殊查找表,用于加速数据检索过程。它们保存了引用数据库中存储数据的指针,这使得在数据库表中更轻松地查找所需的数据记录。

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

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

The CREATE INDEX Statement

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

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

Syntax

CREATE INDEX 的基本语法如下 −

CREATE INDEX index_name ON table_name;

Types of Indexes

使用 CREATE INDEX 语句可以创建多种类型的索引。它们如下所示:

  1. Unique Index

  2. Single-Column Index

  3. Composite Index

  4. Implicit Index

Unique Indexes

唯一索引不仅用于提升性能,还用于保障数据完整性。唯一索引不允许在表中插入任何重复值。当对数据库表应用 PRIMARY 和 UNIQUE 约束时会自动创建唯一索引,以防止用户在索引表列中插入重复值。基本语法如下所示。

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Single-Column Indexes

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

CREATE INDEX index_name
ON table_name (column_name);

Composite Indexes

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

CREATE INDEX index_name
on table_name (column1, column2);

Implicit Indexes

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

The DROP INDEX Statement

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

基本语法如下 −

DROP INDEX index_name;

When should indexes be avoided?

尽管索引旨在增强数据库的性能,但有时应避免使用索引。

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

  1. 不应该在小表中使用索引。

  2. 不应在有频繁的大量批更新或插入操作的表上使用索引。

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

  4. 不应该编制经常操作的列的索引。