join多表关联时,也只能用到一个索引吗?

游北亮
博客专家认证
2015-06-15 05:30:22
求教一个问题:
select * from a
inner join b on a.f1 = b.f1
inner join c on a.f2 = c.f2
where a.f3=123

SQL如上,如果a表的f1、f2、f3这3个字段都创建了索引,
这个sql会用到a表的哪个索引?
是3个索引都用上吗?还是只用到f3索引?
我用Explain看,是只用到了f3这一个索引,
那是不是意味着,先根据f3过滤后的结果,再去跟b表和c表进行关联呢?
...全文
1355 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick-he 2015-06-15
  • 打赏
  • 举报
回复
sql运行会先看where条件
ACMAIN_CHM 2015-06-15
  • 打赏
  • 举报
回复
引用
那是不是意味着,先根据f3过滤后的结果,再去跟b表和c表进行关联呢?
是的。 但具体MYSQL会使用哪个索引,则要看具体情况。

56,912

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧