如何利用MySQL 8.0的Invisible Index特性在性能测试中隐藏索引?

2026-04-30 21:190阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计853个文字,预计阅读时间需要4分钟。

如何利用MySQL 8.0的Invisible Index特性在性能测试中隐藏索引?

使用以下SQL语句即可将表索引设置为不可见,操作属于元数据级别变更,瞬间完成:

ALTER TABLE orders ALTER INDEX idx_user_id INVISIBLE;

注意:执行前必须确认该索引不是主键,也不是隐式主键(即没有显式主键时,第一个 UNIQUE NOT NULL 索引)。否则会报错 ERROR 3522 (HY000): A primary key index cannot be invisible

  • 不能对 PRIMARY 索引执行该操作,无论是否显式定义
  • 如果表没主键但有 UNIQUE (a) NOT NULL,这个索引也属于隐式主键,同样禁止隐藏
  • 普通二级索引、前缀索引、函数索引都支持隐藏

怎么验证隐藏是否生效?

别只信命令返回的 Query OK,要查 INFORMATION_SCHEMA.STATISTICS 或用 SHOW INDEX 看真实状态:

SELECT INDEX_NAME, IS_VISIBLE FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'orders' AND INDEX_NAME = 'idx_user_id';

返回 NO 才算成功隐藏。

阅读全文

本文共计853个文字,预计阅读时间需要4分钟。

如何利用MySQL 8.0的Invisible Index特性在性能测试中隐藏索引?

使用以下SQL语句即可将表索引设置为不可见,操作属于元数据级别变更,瞬间完成:

ALTER TABLE orders ALTER INDEX idx_user_id INVISIBLE;

注意:执行前必须确认该索引不是主键,也不是隐式主键(即没有显式主键时,第一个 UNIQUE NOT NULL 索引)。否则会报错 ERROR 3522 (HY000): A primary key index cannot be invisible

  • 不能对 PRIMARY 索引执行该操作,无论是否显式定义
  • 如果表没主键但有 UNIQUE (a) NOT NULL,这个索引也属于隐式主键,同样禁止隐藏
  • 普通二级索引、前缀索引、函数索引都支持隐藏

怎么验证隐藏是否生效?

别只信命令返回的 Query OK,要查 INFORMATION_SCHEMA.STATISTICS 或用 SHOW INDEX 看真实状态:

SELECT INDEX_NAME, IS_VISIBLE FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'orders' AND INDEX_NAME = 'idx_user_id';

返回 NO 才算成功隐藏。

阅读全文