【问题标题】:MySQL : FORCE INDEX vs USE INDEXMySQL:强制索引与使用索引
【发布时间】:2013-12-27 08:39:19
【问题描述】:

我最近在做 MySQL 表的索引优化,我注意到
FORCE INDEX 和 USE INDEX 几乎提供相同的功能,请问他们有什么不同?

【问题讨论】:

  • "您也可以使用 FORCE INDEX,其作用类似于 USE INDEX (index_list),但另外假设表扫描非常昂贵。换句话说,表扫描是仅在无法使用给定索引之一来查找表中的行时使用。" dev.mysql.com/doc/refman/5.0/en/index-hints.html
  • 它们是一样的还是消耗更多的资源?
  • 如果你使用USE INDEX,那么你推荐优化器使用这个索引,但是如果优化器认为它会更快,它可以使用表扫描。如果您使用FORCE INDEX,那么即使它认为 表扫描更有效,您也会使优化器使用此索引。仅当无法使用索引查找行时,优化器才会使用表扫描。
  • @valex 将此作为答案发布:)

标签: mysql indexing


【解决方案1】:

发布我上面的 cmets 作为答案:

如果您使用 USE INDEX,那么您建议优化器使用此索引,但如果优化器认为它会更快,它可以使用表扫描。如果您使用 FORCE INDEX,那么即使优化器认为表扫描更有效,您也可以使用此索引。仅当无法使用索引查找行时,优化器才会使用表扫描。

Index Hint Syntax:

您也可以使用 FORCE INDEX,其作用类似于 USE INDEX (index_list),但具有 另外,假设表扫描非常昂贵。换句话说, 仅当无法使用给定索引之一时才使用表扫描 在表中查找行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2015-10-10
    • 2011-06-17
    • 2010-12-13
    • 2015-04-29
    相关资源
    最近更新 更多