SQL 创建索引

SQL 创建索引

索引是从SQL数据库中快速检索数据的有效方法。它是一个引用存储在表中的数据的数据库对象,可以显著提高数据库的查询和应用性能。

在SQL中进行索引的过程与书籍中的索引相似:它是一个以表的形式存在的数据库对象,包含了数据位置的详细信息,并拥有独立的存储空间。

尽管索引有助于加速搜索查询,但用户无法直接看到这些索引的作用。

什么是SQL索引

SQL索引是一种特殊的查找表,可帮助高效地搜索或查询数据库表以检索所需数据。例如,当我们使用连接操作从多个表中检索数据时,索引可以提高查询性能。

随着数据量的增长,索引被用于优化任何关系数据库管理系统(RDBMS)的查询性能。因此,它们常被用于经常查询的大型数据库表。

创建SQL索引

可以使用 CREATE INDEX 语句在SQL数据库中的一个或多个列上创建索引。

语法

下面是SQL中 CREATE INDEX 语句的语法:

CREATE INDEX index_name 
ON table_name (column_name1, column_name2,... column_nameN);

这里,

  • index_name 指定要创建的索引的名称。
  • table_name 指定要在其上创建索引的表的名称。
  • (column_name1, column_name2,…column_nameN) 是正在创建索引的一个或多个列的名称。

示例

要在数据库表上创建索引,首先需要创建一个表。因此,在这个示例中,我们使用以下查询创建一个名为 CUSTOMERS 的表 −

CREATE TABLE CUSTOMERS(
   ID INT NOT NULL,
   NAME VARCHAR(15) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS VARCHAR(25),
   SALARY DECIMAL(10, 4),
   PRIMARY KEY(ID));
);

然后,使用以下查询将一些值插入到 CUSTOMERS 表中 −

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', '32', 'Ahmedabad', 2000),
(2, 'Khilan', '25', 'Delhi', 1500),
(3, 'kaushik', '23', 'Kota', 2000),
(4, 'Chaitali', '25', 'Mumbai', 6500),
(5, 'Hardik','27', 'Bhopal', 8500),
(6, 'Komal', '22', 'MP', 9000),
(7, 'Muffy', '24', 'Indore', 5500);

一旦表格创建完成,使用以下查询语句在CUSTOMERS表中为名为 NAME 的列创建索引−

CREATE INDEX index_name ON CUSTOMERS(NAME);

输出

执行上述查询时,结果如下所示:

Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

验证

以下的SHOW INDEX查询用于显示在现有表上创建的所有索引。

SHOW INDEX FROM CUSTOMERS;

在获取的列表中,您可以找到列名称 NAME,以及索引列表中的ID。

Table Non_unique Key_name Seq_in_index Column_name
customers 0 PRIMARY 1 ID
customers 1 index_name 1 NAME

在多个字段上创建索引

我们也可以使用CREATE INDEX语句在表的多个字段(或列)上创建索引。为此,您只需要传递要在其上创建索引的列的名称。

示例

我们不是创建一个新表,而是考虑之前创建的CUSTOMERS表。在这里,我们将在以下查询中为列 NAMEAGE 创建索引 –

CREATE INDEX mult_index_data on CUSTOMERS(NAME, AGE);

输出

当我们执行上述查询时,输出结果如下:

Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

验证

现在,让我们使用以下的SHOW INDEX查询列出在CUSTOMERS表上创建的所有索引。

SHOW INDEX FROM CUSTOMERS;

如您所见,您可以在指标列表中找到列名为NAME和AGE以及ID(主键)。

Table Non_unique Key_name Seq_in_index Column_name
customers 0 PRIMARY 1 ID
customers 1 index_name 1 NAME
customers 1 mult_index_data 1 NAME
customers 1 mult_index_data 2 AGE

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程