如图,为什么tb_moment的momid是唯一索引,在explain发现却没使用到这个字段的索引,只用到了left join后面那个表的索引?有什么办法让主表tb_moment也走上索引。
如图,为什么tb_moment的momid是唯一索引,在explain发现却没使用到这个字段的索引,只用到了left join后面那个表的索引?有什么办法让主表tb_moment也走上索引。
8 回答6.5k 阅读
2 回答3.3k 阅读
1 回答2.5k 阅读✓ 已解决
5 回答1.5k 阅读
3 回答1.9k 阅读✓ 已解决
4 回答466 阅读✓ 已解决
2 回答2.2k 阅读
tb_moment这一列的基数太小了。
举个例子,表里有1000万条记录,这个字段只有3种取值,那他的基数是3。
这样如果走tbmoment这个字段的索引,约需要进行333万次回表,回表是随机读取,不是顺序读取。代价很大,所以优化器会决定走全表扫描。
你这种情况,只能看看能不能在驱动表添加其他能走索引加快查询速度的过滤条件