如您所知,查询每个表只使用一个索引。因此,有一些索引提示让我们告诉查询使用哪个索引。 Here是该文档的文档。
有三个索引提示:
USE
IGNORE
FORCE
我无法理解USE
和FORCE
之间的区别。他们看起来和我一模一样。有人知道他们的不同之处吗?
答案 0 :(得分:2)
USE INDEX(index_list)提示告诉MySQL只使用其中一个命名索引来查找表中的行。
FORCE INDEX提示的作用类似于USE INDEX(index_list),另外还假设表扫描非常昂贵。换句话说,只有在无法使用其中一个命名索引查找表中的行时才使用表扫描。
因此,USE INDEX使数据库仅使用特定索引进行搜索,并在必要时进行表扫描*。
FORCE INDEX也是如此,但只有在非常非常必要的情况下才能确保使用表扫描。
* 表扫描正在读取没有索引的表数据