首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在内部连接表上强制使用索引?

问如何在内部连接表上强制使用索引?
EN

Stack Overflow用户
提问于 2010-02-22 17:59:09
回答 2查看 39.8K关注 0票数 21

如何在类似如下的查询上强制使用索引。我需要分别在foo和bar上强制建立索引。

代码语言:javascript
复制
SELECT foo.*, bar.*
FROM foo
INNER JOIN bar ON foo.rel_id = bar.rel_id
WHERE foo.status = 1
  AND bar.status = 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-22 18:10:32

假设索引a存在于foo上,索引b存在于bar上:

代码语言:javascript
复制
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上选择索引

票数 34
EN

Stack Overflow用户

发布于 2010-02-22 18:05:24

最明显的做法是在两个表的rel_id和status上创建一个覆盖索引,以满足连接和where需求。

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

编辑

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

从MySQL 4.0.9开始,您还可以使用强制索引,它的作用类似于使用索引(index_list),但增加了表扫描的开销。换句话说,只有在无法使用给定索引查找表中的行的情况下,才使用表扫描。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2310062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档