【发布时间】: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 将此作为答案发布:)