SQL 索引

SQL 索引

SQL中的索引是一种特殊的表,用于加快对数据库表中数据的搜索。它还经常从表中检索大量数据。索引需要在硬盘上占用自己的空间。

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

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

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

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

为什么需要SQL索引?

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

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

创建索引(Create an INDEX)

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

CREATE INDEX Index_Name ON Table_Name ( Column_Name);

在这里, Index_Name 是我们想要创建的索引的名称,而 Table_Name 是要在其上创建索引的表的名称。 Column_Name 表示要应用索引的列的名称。

如果我们想要在两个或更多列的组合上创建索引,则可以使用以下SQL语法:

CREATE INDEX Index_Name ON Table_Name ( column_name1, column_name2, ...., column_nameN);

在SQL中创建索引的示例:

让我们来看一个员工表:

Emp_Id Emp_Name Emp_Salary Emp_City Emp_State
1001 Akshay 20000 Noida U.P
1002 Ram 35000 Jaipur Rajasthan
1003 Shyam 25000 Gurgaon Haryana
1004 Yatin 30000 Lucknow U.P

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

CREATE INDEX index_state ON Employee (Emp_State);

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

CREATE INDEX index_city_State ON Employee (Emp_City, Emp_State);

创建唯一索引

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

这个索引是维护SQL表的数据完整性的最佳方式。

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

CREATE UNIQUE INDEX Index_Name ON Table_Name ( Column_Name);

在SQL中创建唯一索引的示例:

让我们以上面的Employee表为例。以下SQL查询在Employee表的Emp_Salary列上创建唯一索引 ndex_salary

CREATE UNIQUE INDEX index_salary ON Employee (Emp_Salary);

重命名索引

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

语法:

ALTER INDEX old_Index_Name RENAME TO new_Index_Name;

重命名 SQL 中的索引示例:

以下 SQL 查询将索引 ‘index_Salary’ 重命名为 ‘index_Employee_Salary’ 以上述 Employee 表为例:

ALTER INDEX index_Salary RENAME TO index_Employee_Salary;

删除索引

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

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

在Oracle数据库中:

DROP INDEX Index_Name;

在MySQL数据库中:

ALTER TABLE Table_Name DROP INDEX Index_Name;

在Ms-Access数据库中:

DROP INDEX Index_Name ON Table_Name;

在SQL Server数据库中:

DROP INDEX Table_Name.Index_Name;

SQL中删除索引的示例:

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

DROP INDEX index_salary;

修改索引

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

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

ALTER INDEX Index_Name ON Table_Name REBUILD;

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

在以下情况下或者以下情境中,不应在SQL中使用索引:

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程