如何在类似如下的查询上强制使用索引。我需要分别在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发布于 2010-02-22 18:10:32
假设索引a存在于foo上,索引b存在于bar上:
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上选择索引
发布于 2010-02-22 18:05:24
最明显的做法是在两个表的rel_id和status上创建一个覆盖索引,以满足连接和where需求。
到目前为止,你尝试了什么?
编辑
您提供了index hints,但每个人都回答的关键似乎是您不应该这样做。
从MySQL 4.0.9开始,您还可以使用强制索引,它的作用类似于使用索引(index_list),但增加了表扫描的开销。换句话说,只有在无法使用给定索引查找表中的行的情况下,才使用表扫描。
https://stackoverflow.com/questions/2310062
复制相似问题