在sql中用hint来使用不可见索引,索引可以用吗?

在sql中用hint来使用不可见索引,索引可以用吗?

2 个赞

从官方文档解释来看,应该会使用索引,只是优化器不选择,等测试下

3 个赞

不可见索引不会被查询优化器使用;
不可见索引仅仅对优化器而言,仍然可以被修改和删除;
即使使用SQL Hint USE INDEX强制使用索引,优化器也无法使用不可见索引;
不允许将主键索引设置为不可见

5 个赞

不能用,TiDB 中的不可见索引是基于 MySQL 8.0 中的同等特性构建的,不会被查询优化器使用,即使使用hint,这一点和mysql一样的。

5 个赞

受教~感谢

2 个赞

谢谢,明白了,受教~

2 个赞

不可见索引是对于优化器而言的,优化器看不见就不会去选择了呀,即使你使用 hint 强制走索引也不行,这点在 Oracle、MySQL 等其他数据库是一样的。

2 个赞

各个数据库对不可见的索引的处理都是一样的,都是可以维护,但不能给优化器使用,TiDB也不会例外。

1 个赞

英雄所见略同,你比我快2分钟,呵呵。

1 个赞

不可见索引不会被查询优化器使用;是处于待下线的一个状态(不可用,可以编辑)

1 个赞

一般要是准备删除某个索引,先设为不可见,观察对业务的影响,没有影响后可以删掉此索引

1 个赞

用不到的,不可见索引是用来验证该索引是否可以被删除的,即如果有两个相似的索引A和B,其中B已经包含了A,你希望删除A但又怕有问题,此时可先设置A不可见(并未删除),观察相关SQL如果没有慢查,说明B索引是生效的,此时再把A删除,如果有慢查了,可马上恢复A,比如传统的删除索引再创建索引,设置不可见属性最大的优点是速度快,因为并没有实际的删除和恢复。

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。