首页/数据/数据库速查/不可见索引(Invisible Index)
性能与调优57 条

不可见索引(Invisible Index)

8.0 支持把索引设为 INVISIBLE:优化器视而不见但索引仍在维护,用于「下线前观察」——删索引前的安全气囊。

数据库速查数据更新于 2026-10-12

切换与观察

切换与观察
ALTER TABLE appdb.orders ALTER INDEX idx_status INVISIBLE;
EXPLAIN SELECT ... ;   -- 观察计划变化与性能
-- 确认无影响后删除;若有问题改回可见
ALTER TABLE appdb.orders ALTER INDEX idx_status VISIBLE;
-- DROP INDEX idx_status;
行为对优化器不可见;主键不可设置
观察期覆盖完整业务周期(含月末/活动)后再删
兜底有问题一键 VISIBLE 恢复
use_invisible_indexes 开关可让优化器临时忽略该设置(调试用)。

易错点

  • 观察期太短(几天):月末跑批的依赖没覆盖到,删除后事故
  • 把 INVISIBLE 当“作弊开关”长期保留:白付维护成本,该删就删

数据来源与参考

  • MySQL 8.0 Reference Manual: Invisible Indexes

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌