MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 删除索引

MySQL允许DROP INDEX语句从表中删除现有索引。要从表中删除索引,我们可以使用以下查询:
mysql>DROP INDEX index_name ON table_name [algorithm_option | lock_option];
如果要删除索引,则需要两件事:
首先,我们必须指定要删除的索引的名称。 第二,索引所属的表的名称。
Drop Index语法包含两个可选选项,分别是Algorithm和Lock,用于在索引修改期间读取和写入表。让我们对两者进行详细说明:

算法选项

algorithm_option使我们能够指定用于删除表中索引的特定算法。 algorithm_option 的语法如下:
Algorithm [=] {default | INPLACE | COPY}
Drop Index语法主要支持INPLACE和COPY这两种算法。
COPY: 该算法允许我们逐行将一个表复制到另一个新表中。然后在此新表上执行DROP Index语句。在此表上,我们无法执行INSERT和UPDATE语句进行数据操作。
INPLACE: 该算法允许我们重建表而不是复制原始表。我们可以在此表上执行所有数据操作操作。在此表上,MySQL 在删除索引期间发出独占的元数据锁定。
注意: 如果未定义algorithm子句,MySQL将使用INPLACE算法。如果不支持INPLACE,则使用COPY算法。 DEFAULT算法的工作原理与在Drop Index语句中不使用任何算法子句的情况相同。

锁定选项

此子句使我们能够控制索引删除期间并发读取和写入的级别。 lock_option 的语法如下:
LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}
在语法中,我们可以看到lock_option包含 四种模式,它们是DEFAULT,NONE,SHARED和EXCLUSIVE。现在,我们将详细讨论所有模式:
共享: 此模式仅支持并发读取,不支持并发写入。如果不支持并发读取,则会出现错误。
默认: 此模式可以为指定算法提供最大的并发级别。如果支持,它将启用并发读写,否则将强制执行独占模式。
无: 如果支持此模式,则可以进行并发读写。否则,将产生错误。
排他性: 此模式强制执行独占访问。

示例

首先,执行以下命令以显示表中可用的索引。
mysql> SHOW INDEXES FROM student;
它将给出以下输出。
MySQL Drop Index
在输出中,我们可以看到有三个可用索引。现在,执行以下语句从表 students中删除 class 索引。
mysql> DROP INDEX class ON student;
同样,执行SHOW INDEXES语句以验证是否删除了索引。执行完此语句后,我们将获得以下输出,其中只有两个索引可用。
MySQL删除索引

使用算法和锁定的示例

以下语句使用算法将 age 索引从学生表中删除,锁定选项。
mysql> DROP INDEX age ON student ALGORITHM = INPLACE LOCK = DEFAULT;

MySQL丢弃主键索引

在某些情况下,该表包含一个主索引,该索引在您创建具有主键或唯一键的表时创建。在这种情况下,由于PRIMARY是保留字,我们需要执行以下命令。
mysql> DROP INDEX PRIMARY ON table_name;
要从学生表中删除主键索引,请执行以下语句:
mysql> DROP INDEX PRIMARY ON student;

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4