MySQL - 删除索引

MySQL - 删除索引 首页 / MySQL入门教程 / MySQL - 删除索引

MySQL允许Drop Index语句从表中删除现有索引。要从表中删除索引,无涯教程可以使用以下查询:

mysql>DROP INDEX index_name ON table_name [algorithm_option | lock_option];

如果想删除索引,它需要两件事:

  • 首先,必须指定要删除的索引的名称。
  • 第二,您的索引所属的表的名称。

Drop Index语法包含两个可选选项,该选项是算法和锁定在索引修改期间读取和编写表。让无涯教程详细解释:

算法选项

algorithm_option使能够指定用于删除表中索引的特定算法。 algorithm_option 的语法如下:

Algorithm [=] {DEFAULT | INPLACE | COPY}

Drop Index语法主要支持两种算法,该算法是否地并复制。

COPY         -  此算法允许无将一个表复制到另一个新表行中行,然后在此新表上执行索引语句。无法执行INSERT和UPDATE语句以进行数据操作。

INPLACE  -  此算法允许建表而不是复制原始表。无涯教程可以在此表上执行所有数据操作操作。在此表中,在索引删除期间发出独占元数据锁定。

Note: 如果未定义算法子句,MySQL使用inplace算法。如果不支持否定,则使用copy算法。默认算法与使用Drop Index语句的任何algorithm子句的不同,默认算法相同。

锁定选项

此子句使能够在索引删除期间控制并发读取和写入的级别。 lock_option 的语法如下:

LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}

在语法中,可以看到lock_option包含四种模式,DEFAULT,NONE,SHARED和EXCLUSIVE。现在,无涯教程将详细讨论所有模式:

SHARED          -  此模式仅支持并发读取,而不是并发写入。不支持并发读取时,它会出错。

DEFAULT        - 此模式可具有指定算法的最大并发级别。如果支持,它将启用并发读取和写入,以免强制执行独占模式。

NONE                -  如果支持此模式,则在并发读写。否则,它会产生错误。

EXCLUSIVE   - 此模式强制执行独家访问权限。

例子

首先,执行以下命令以显示表中可用的索引。

mysql> SHOW INDEXES FROM student;

它将提供以下输出。

mysql drop index

在输出中,可以看到有三个可用索引。现在,执行以下语句来删除表 student class 索引。

mysql> DROP INDEX class ON student;

同样,执行show indexes语句以验证索引是否已删除。执行此语句后,无涯教程将获得以下输出,其中只有两个索引。

mysql drop index

例子-使用算法和锁定

以下语句删除age索引,使用算法和锁定选项来形成student学生表。

mysql> DROP INDEX age ON student ALGORITHM = INPLACE LOCK = DEFAULT;

删除主键索引

在某些情况下,该表包含在使用主键或唯一键创建表时创建的主要索引。在这种情况下,无涯教程需要执行以下命令,因为主要是保留字。

mysql> DROP INDEX PRIMARY ON table_name;

要从学生表中删除主键索引,请执行以下语句:

mysql> DROP INDEX PRIMARY ON student;

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Linux性能优化实战 -〔倪朋飞〕

面试现场 -〔白海飞〕

大规模数据处理实战 -〔蔡元楠〕

雷蓓蓓的项目管理实战课 -〔雷蓓蓓〕

To B市场品牌实战课 -〔曹林〕

手把手教你玩音乐 -〔邓柯〕

Spring编程常见错误50例 -〔傅健〕

零基础实战机器学习 -〔黄佳〕

AI大模型之美 -〔徐文浩〕

好记忆不如烂笔头。留下您的足迹吧 :)