SQL没触发到索引

t240034137 2013-03-27 11:26:23
2个表联合查询

select a.* from a left join b on a.news_id= b.news_id where a.news_id= xxxx;


然后EXPLAIN一下。
结果:


为啥a没有走索引? 这边我设置A表的news_id为索引

最好能解释一下这些字段。

官方网站上的东西我有点看不明白。小弟在此谢了

参考文档:
http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#explain
...全文
482 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Regan-lin 2013-07-04
  • 打赏
  • 举报
回复
引用 6 楼 longtian1213 的回复:
这种多表连接查询,mysql一半都是选取a表中一条,然后到b表中查找,此时可以使用b表中的索引,然后重复这个动作,直到a表中的数据全部查询完。所以a表肯定是要全部扫描的,不管有没有索引!
+1
S117 2013-07-04
  • 打赏
  • 举报
回复
这种多表连接查询,mysql一半都是选取a表中一条,然后到b表中查找,此时可以使用b表中的索引,然后重复这个动作,直到a表中的数据全部查询完。所以a表肯定是要全部扫描的,不管有没有索引!
Rotel-刘志东 2013-06-26
  • 打赏
  • 举报
回复
优化也需要取舍和平衡的。
Rotel-刘志东 2013-06-26
  • 打赏
  • 举报
回复
一般都是小的结果集驱动大的结果集。
Rotel-刘志东 2013-06-22
  • 打赏
  • 举报
回复
如果扫描的结果集较大时可能为全表扫描。
rucypli 2013-03-27
  • 打赏
  • 举报
回复
索引的作用在于迅速定位极小的结果集 如果本身要取的结果集很大 全表扫描则可能更快
ACMAIN_CHM 2013-03-27
  • 打赏
  • 举报
回复
show index from a; 检查一下你的索引情况。 很多种情况下索引会“失效” 比如当索引中所有的值都相同,则MYSQL会认为没必要走索引。

56,940

社区成员

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

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