USE和FORCE在索引提示中的区别是什么?

时间:2016-07-06 22:41:51

标签: mysql sql

如您所知,查询每个表只使用一个索引。因此,有一些索引提示让我们告诉查询使用哪个索引。 Here是该文档的文档。

有三个索引提示:

  • USE
  • IGNORE
  • FORCE

我无法理解USEFORCE之间的区别。他们看起来和我一模一样。有人知道他们的不同之处吗?

1 个答案:

答案 0 :(得分:2)

  

USE INDEX(index_list)提示告诉MySQL只使用其中一个命名索引来查找表中的行。

     

FORCE INDEX提示的作用类似于USE INDEX(index_list),另外还假设表扫描非常昂贵。换句话说,只有在无法使用其中一个命名索引查找表中的行时才使用表扫描。

From the docs

因此,USE INDEX使数据库仅使用特定索引进行搜索,并在必要时进行表扫描*。

FORCE INDEX也是如此,但只有在非常非常必要的情况下才能确保使用表扫描。

* 表扫描正在读取没有索引的表数据