如何在内连接表上强制索引?

时间:2010-02-22 09:59:09

标签: mysql inner-join

如何在类似于此的查询上强制索引。我需要单独强制foo和bar的索引。

SELECT foo.*, bar.*
FROM foo
INNER JOIN bar ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
  AND bar.status = 1

2 个答案:

答案 0 :(得分:27)

假设指数 a 存在于foo上且指数 b 位于条形码上:

SELECT foo.*, bar.*
FROM foo FORCE INDEX (a)
INNER JOIN bar FORCE INDEX (b) ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
  AND bar.status = 1

会强制在MySql上选择索引

答案 1 :(得分:0)

显而易见的是在两个表的rel_idstatus上创建覆盖索引以满足连接和需求。

到目前为止你尝试了什么?

修改

你提供index hints,但每个人回答的关键似乎是你不应该这样做。

  

从MySQL 4.0.9开始,您也可以使用   FORCE INDEX,其作用类似于USE INDEX   (index_list)但添加了   假设表扫描   非常贵。换句话说,一个   表扫描仅在没有时使用   使用给定索引之一的方法   在表格中找到行。