Mysql 简明教程

MySQL - Create Index

数据库索引提高了数据库表中操作的速度。它们可以在一个或多个列上创建,既为快速进行随机查找提供依据,也为高效排序记录访问提供依据。

实际上,索引是一种特殊的查找表,它持有对实际表中每条记录的一个指针。

在两种情况下我们可以在 MySQL 表上创建索引:在创建一个新表时,以及在现有的表上。

Creating Indexes on New Table

如果我们要在一个新表上定义一个索引,我们使用 CREATE TABLE 语句。

Syntax

以下是创建一个新表索引的语法:

CREATE TABLE(
 column1 datatype PRIMARY KEY,
 column2 datatype,
 column3 datatype,
 ...
 INDEX(column_name)
);

Example

在这个例子中,我们创建一个新表 CUSTOMERS ,并使用 CREATE TABLE 查询为其其中的一个列添加了索引:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   INDEX(ID)
);

为了验证索引是否已被定义,我们使用 DESC 语句检查表定义。

DESC CUSTOMERS;

Output

已显示的表结构将包含在 ID 列上的一个 MUL 索引,如下所示:

Creating Indexes on Existing Table

要创建一个现有的表索引,我们使用以下 SQL 语句:

  1. With CREATE INDEX Statement

  2. With ALTER Command

CREATE INDEX Statement

CREATE INDEX 语句的基本语法如下:

CREATE INDEX index_name ON table_name;

在以下示例中,让我们在 CUSTOMERS 表上创建一个索引。我们此处使用 CREATE INDEX 语句:

CREATE INDEX NAME_INDEX ON CUSTOMERS (Name);

为了检查表上是否创建索引,我们使用 DESC 语句显示表结构,如下所示:

DESC CUSTOMERS;

Output

正如我们可以在下表中看到的那样,在 CUSTOMERS 表的 NAME 列上创建一个复合索引。

ALTER…​ ADD Command

以下是 ALTER 语句的基本语法:

ALTER TABLE tbl_name ADD INDEX index_name (column_list);

让我们在以下示例中使用 ALTER TABLE…​ADD INDEX 语句为 CUSTOMERS 表添加索引:

ALTER TABLE CUSTOMERS ADD INDEX AGE_INDEX (AGE);

Output

正如我们可以在下表中看到的那样,在 CUSTOMERS 表的 AGE 列上创建一个复合索引。

Simple and Unique Index

唯一索引是多个同时创建的行中无法创建的索引。以下是创建唯一索引的语法:

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);

Example

以下示例在表 temp 上创建唯一索引:

CREATE UNIQUE INDEX UNIQUE_INDEX ON CUSTOMERS (Name);

Composite Indexes

我们还可以在多个列上创建索引,并且它被称为复合索引,创建复合索引的基本语法如下:

CREATE INDEX index_name
on table_name (column1, column2);

Example

以下查询在上述创建表中的 ID 和 Name 列上创建复合索引:

CREATE INDEX composite_index on CUSTOMERS (ID, Name);

Creating an Index Using Client Program

除了使用 SQL 查询,我们还可以使用客户端程序在 MySQL 表上创建索引。

Syntax

以下是使用多种编程语言在 MySQL 数据库中创建索引的语法 -

Example

以下是该操作在各种编程语言中的实现 −