如何在类似于此的查询上强制索引。我需要单独强制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
答案 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_id
和status
上创建覆盖索引以满足连接和需求。
到目前为止你尝试了什么?
你提供index hints,但每个人回答的关键似乎是你不应该这样做。
从MySQL 4.0.9开始,您也可以使用 FORCE INDEX,其作用类似于USE INDEX (index_list)但添加了 假设表扫描 非常贵。换句话说,一个 表扫描仅在没有时使用 使用给定索引之一的方法 在表格中找到行。