不可见索引如何使用?

TiDB v5.0 版本引入了不可见索引的特性,从 v8 版本起,通过调整系统变量 tidb_opt_use_invisible_indexes 来指导优化器选择性地利用隐藏索引。那么,在 TiDB v5.0 至 v7.5 的版本中,创建了隐藏索引之后,SQL调优过程中若想观察隐藏索引的效果,应当采取何种措施呢?

你可以将会话级系统变量 tidb_opt_use_invisible_indexes 设置为 ON ,让当前会话识别并使用不可见索引。利用这个功能,在添加新索引并希望测试其效果时,可以先将索引创建为不可见索引,然后通过修改该系统变量在当前会话中测试新索引的性能,而不影响其他会话。这一改进提高了性能调优的安全性,并有助于增强生产数据库的稳定性。

不可见索引,只是针对优化器来说,在生成执行计划阶段,不会选择这类索引。但是表上数据的任何增删改操作,索引都还是需要同步进行变化,这一点需要注意!

这个不就和oracle的索引不可见一样吗,invalid,索引不可用,执行计划无法使用这个索引,实际sql执行也直接不能使用。这个只是为了测试判断 索引删掉之后有没有影响,如果删掉,发现有影响再添加耗时太长,所以加了一个索引不可见,不可用的功能。先让索引不可见,来测试该表没有这个索引的时候,所有sql以及业务是否有影响,如果没影响,则直接删除。如果有影响。毫秒内直接吧索引设置为可见。就可以立马使用。

此处
https://docs.pingcap.com/zh/tidb/stable/sql-statement-alter-index/