SQL 创建索引
索引是从SQL数据库中快速检索数据的有效方法。它是一个引用存储在表中的数据的数据库对象,可以显著提高数据库的查询和应用性能。
在SQL中进行索引的过程与书籍中的索引相似:它是一个以表的形式存在的数据库对象,包含了数据位置的详细信息,并拥有独立的存储空间。
尽管索引有助于加速搜索查询,但用户无法直接看到这些索引的作用。
什么是SQL索引
SQL索引是一种特殊的查找表,可帮助高效地搜索或查询数据库表以检索所需数据。例如,当我们使用连接操作从多个表中检索数据时,索引可以提高查询性能。
随着数据量的增长,索引被用于优化任何关系数据库管理系统(RDBMS)的查询性能。因此,它们常被用于经常查询的大型数据库表。
创建SQL索引
可以使用 CREATE INDEX 语句在SQL数据库中的一个或多个列上创建索引。
语法
下面是SQL中 CREATE INDEX 语句的语法:
这里,
- index_name 指定要创建的索引的名称。
- table_name 指定要在其上创建索引的表的名称。
- (column_name1, column_name2,…column_nameN) 是正在创建索引的一个或多个列的名称。
示例
要在数据库表上创建索引,首先需要创建一个表。因此,在这个示例中,我们使用以下查询创建一个名为 CUSTOMERS 的表 −
然后,使用以下查询将一些值插入到 CUSTOMERS 表中 −
一旦表格创建完成,使用以下查询语句在CUSTOMERS表中为名为 NAME 的列创建索引−
输出
执行上述查询时,结果如下所示:
验证
以下的SHOW INDEX查询用于显示在现有表上创建的所有索引。
在获取的列表中,您可以找到列名称 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表。在这里,我们将在以下查询中为列 NAME 和 AGE 创建索引 –
输出
当我们执行上述查询时,输出结果如下:
验证
现在,让我们使用以下的SHOW INDEX查询列出在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 |