mysql的left join索引只使用join的表的索引?

如图,为什么tb_moment的momid是唯一索引,在explain发现却没使用到这个字段的索引,只用到了left join后面那个表的索引?有什么办法让主表tb_moment也走上索引。

image

阅读 4.2k
3 个回答

tb_moment这一列的基数太小了。
举个例子,表里有1000万条记录,这个字段只有3种取值,那他的基数是3。
这样如果走tbmoment这个字段的索引,约需要进行333万次回表,回表是随机读取,不是顺序读取。代价很大,所以优化器会决定走全表扫描。

你这种情况,只能看看能不能在驱动表添加其他能走索引加快查询速度的过滤条件

你state加了索引吗?

跟查询条件有关,没什么条件不就要查全表喽,状态这种字段也不适合加索引

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题