SQL INDEX

2025年2月2日 | 阅读 4 分钟

SQL 中的索引是一个特殊的表,用于加速数据库表中数据的搜索。它还可以频繁地从表中检索大量数据。索引需要占用硬盘上的独立空间。

SQL 中的索引概念与小说或书籍中的索引概念相同。

这是提高查询性能的最佳 SQL 技术。使用索引的缺点是它们会减慢 UPDATE 和 INSERT 语句的执行时间。但它们也有一个优点,就是可以加快 SELECT 和 WHERE 语句的执行时间。

在 SQL 中,索引是根据表中的字段创建的。我们可以轻松地在一个表上创建一个或多个索引。索引的创建和删除不会影响数据库中的数据。

在本文中,您将学习如何在 SQL 数据库中创建、修改和删除索引。

为什么需要 SQL 索引?

以下原因说明了为什么 SQL 中需要索引:

  • SQL 索引可以快速搜索大型数据库中的信息。
  • 对于包含不同值的列,此概念是一种快速过程。
  • 这种数据结构以升序或降序对列(字段)的数据值进行排序。然后,它为每个值分配一个条目。
  • 每个索引表只包含两列。第一列是 row_id,另一列是 indexed-column。
  • 当索引与较小的表一起使用时,索引的性能可能不明显。

创建索引

在 SQL 中,我们可以使用以下 CREATE 语句轻松创建索引:

其中,Index_Name 是我们要创建的索引的名称,Table_Name 是要创建索引的表的名称。Column_Name 表示要应用索引的列的名称。

如果要在一列或多列的组合上创建索引,则可以在 SQL 中使用以下语法:

SQL 中创建索引的示例

我们来看一个 Employee 表:

员工 IDEmp_NameEmp_SalaryEmp_CityEmp_State
1001Akshay20000NoidaU.P
1002Ram35000斋浦尔拉贾斯坦邦
1003Shyam25000Gurgaon哈里亚纳邦
1004Yatin30000勒克瑙U.P

以下 SQL 查询在 Employee 表的 Emp_State 列上创建了一个名为 'Index_state' 的索引。

假设我们要为上述 Employee 表的 Emp_cityEmp_State 列的组合创建索引。为此,我们必须使用以下查询:

创建唯一索引

唯一索引与 SQL 中的主键相同。唯一索引不允许选择包含重复值的列。

此索引是维护 SQL 表数据完整性的最佳方法。

创建唯一索引的语法如下:

SQL 中创建唯一索引的示例

让我们看上面的 Employee 表。以下 SQL 查询在 Employee 表的 Emp_Salary 列上创建了一个名为 index_salary 的唯一索引。

重命名索引

我们可以使用 ALTER 命令轻松地在关系数据库中重命名表的索引。

语法

SQL 中重命名索引的示例

以下 SQL 查询将上面 Employee 表的索引 'index_Salary' 重命名为 'index_Employee_Salary'

删除索引

可以使用 DROP 命令轻松地从 SQL 数据库中删除表的索引。如果要从数据字典中删除索引,您必须是数据库的所有者或拥有删除它的权限。

关系数据库中删除索引的语法如下:

在 Oracle 数据库中

在 MySQL 数据库中

在 Ms-Access 数据库中

在 SQL Server 数据库中

SQL 中删除索引的示例

假设我们要从 SQL 数据库中删除上面提到的 'index_Salary'。为此,我们必须使用以下 SQL 查询:

修改索引

可以使用 ALTER 命令轻松地在关系数据库中修改表的索引。

修改 SQL 中索引的基本语法如下:

何时不应在 SQL 中使用索引?

在以下情况或场景中不应在 SQL 中使用索引:

  • 当表的大小较小时,可以避免使用 SQL 索引。
  • 当表需要频繁更新时。
  • 当表中的列包含大量 NULL 值时,不应使用索引。