Welcome to 16892 Developer Community-Open, Learning,Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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

image


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
3.6k views
Welcome To Ask or Share your Answers For Others

1 Answer

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to 16892 Developer Community-Open, Learning and Share

548k questions

547k answers

4 comments

56.5k users

...