• MySQL隐形索引简介


     

    不可见索引允许您将索引标记为查询优化器不可用。MySQL维护不可见索引,并在与索引关联的列中的数据发生更改时使其保持最新。

    默认情况下,索引是可见的。要使它们不可见,您必须在创建时或使用ALTER TABLE命令显式声明其可见性MySQL为我们提供了维护索引可见性的关键字VISIBLEINVISIBLE关键字。

    要创建不可见索引,请使用以下语句:

    在这个语法中:

    1. 首先,在CREATE INDEX子句后指定索引的名称
    2. 其次,列出要添加到索引的表名和列列表。INVISIBLE关键字表明您正在创建的索引是不可见的。

    例如,以下语句在示例数据库extension中的employees上创建索引,并将其标记为不可见索引:

    要更改现有索引的可见性,请使用以下语句:

    例如,要使extension索引可见,请使用以下语句:

    您可以通过查询数据库中statistics来查找索引及其可见性information_schema

    这是输出:

    MySQL隐形索引示例

    此外,您可以使用该SHOW INDEXES命令显示表的所有索引:

    如前所述,查询优化器不使用不可见索引,那么为什么首先使用不可见索引?实际上,隐形索引有许多应用程序。例如,您可以使索引不可见,以查看它是否对性能产生影响,并将索引再次标记为可见。

    MySQL隐形索引和主键

    主键上的索引不能是不可见的。如果您尝试这样做,MySQL将发出错误。

    此外,隐式主键索引也不可见。当您UNIQUENOT NULL没有主键的表定义索引时,MySQL会隐式地理解该列是主键列,并且不允许您使索引不可见。

    请考虑以下示例。

    首先,创建一个新表UNIQUE上一个索引NOT NULL列:

    其次,尝试使discount_id 索引不可见:

    MySQL发出以下错误消息:

    MySQL隐形索引系统变量

    为了控制查询优化器使用的可见索引,MySQL使用系统变量的use_invisible_indexes标志optimizer_switch默认情况下,use_invisible_indexes关闭:

    在本教程中,您了解了MySQL隐形索引,如何创建

  • 相关阅读:
    99%的人没使用过它俩,Docker最佳实践+2
    kubernetes 中 kubeconfig 的用法
    jenkins批量修改配置文件
    记一次K8s排错实战
    记一次失败记录: MindSpore1.3.0 GPU 源码安装 —— Ubuntu18.04系统 (最终安装结果为失败)
    【转载】 使用Python的ctypes查看内存
    (摘抄) 源码分析multiprocessing的Value Array共享内存原理
    (续) python 中 ctypes 的使用尝试
    python 中 ctypes 的使用尝试
    深度强化学习算法(深度强化学习框架)为考虑可以快速适用多种深度学习框架建议采用弱耦合的软件设计方法——快速适用于多种深度学习计算框架的深度强化学习框架设计方案
  • 原文地址:https://www.cnblogs.com/DataArt/p/10226070.html
Copyright © 2020-2023  润新知