【问题标题】:What happens to the hidden MySQL [InnoDB] PK when you add a PK?添加 PK 时隐藏的 MySQL [InnoDB] PK 会发生什么?
【发布时间】:2015-06-16 22:27:26
【问题描述】:

在 MySQL 中使用 InnoDB 存储引擎时,如果在创建表时未指定 PRIMARY KEY,则使用隐藏唯一索引作为聚集索引。由于数据字典上的互斥锁,我了解到这些隐藏索引可能会导致争用。

我的问题是 - 如果我向表中添加 PRIMARY KEY,隐藏的 PK 会发生什么?

【问题讨论】:

    标签: mysql indexing innodb


    【解决方案1】:

    如果您将PRIMARY KEY 添加到表中,InnoDB 会将其用作集群索引。

    如果 InnoDB 在非 NULLable 列上使用 UNIQUE INDEX 作为集群索引,则 UNIQUE INDEX 仍然存在,但它将成为二级索引(当您添加 PRIMARY KEY 时。)

    如果 InnoDB 使用合成行 id 列上的隐藏索引作为集群索引,则该隐藏索引将被删除(当您添加 PRIMARY KEY 时)。

    【讨论】:

    • 你能提供任何文档/链接吗?
    • 有一个明确的 PK 几乎总是更好。
    • 参考:在网上搜索 jeremy cole innodb index 并阅读前几个链接。
    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多