對InnoDB覆蓋索引的疑問首先,我對覆蓋索引的了解是,如果創(chuàng)建了二級索引后,要想做到覆蓋索引,那么你select的列就要被你的索引所覆蓋比如,當(dāng)我創(chuàng)建一個二級索引idx_name_age(name,age)對selectnamefromuserwherename="Jhon";語句,自然就可以做到覆蓋索引這樣就不用再回表走聚簇索引了但是當(dāng)我selectidfromuserwhereid=1;時,這個用到了主鍵索引,也就是會直接走聚簇索引,既然走聚簇索引的話,B+Tree的葉子節(jié)點(diǎn)是包含所有列的,那我認(rèn)為select*fromuserwhereid=1;也是一樣的但explain的分析結(jié)果發(fā)現(xiàn)selectidfromuserwhereid=1;是主鍵索引,并且做到了覆蓋索引但是select*fromuserwhereid=1;雖然是主鍵索引,但卻不是覆蓋索引,這是為啥?
Innodb覆蓋索引的幾個疑問
慕尼黑8549860
2019-05-20 10:01:44