mysql强制走索引(force index)会不会对数据库造成影响呢?

# 数据库本来不走索引,你如果让他强制走索引,效率确实提高了,但是会不会给数据库造成什么影响或者隐患?

图片说明

这个问题必须结合实际情况来分析。
我大致给你讲一下索引和全表的优缺点,
举个简单例子,比较通俗的理解
比如一张表有100万数据,他可能一共有占用1万个数据块。那么
为了获取所有数据,你可以理解为成本需要1万。

如果使用索引获取数据量的成本是(1+索引高度+1)获取数据量。一般来说索引高度为2或者3,很少到4
100万数据估计的高度大概为3
如果为了获取所有数据,那么成本就是 5
100万=500万。使用索引比全表扫描慢了500倍。

但是如果你只是为了获取其中100行。
全表扫描的成本还是1万。使用索引的成本就变成了5*100 = 500.对于全表扫描来说快了20倍。

所以如果你的表很大,每次取的数据量占总数据量比值不会很大,那么强制走索引只有好处,没有坏处,反之则必然有坏处