1. 在where条件语句中,找到所有等值谓词中的条件列,将他们作为索引片中的开始列。
2. 将group by 和 order by 中的列,加入到索引中。
3. 将select字段中剩余的列加入到索引片中。
理由
1. 通过索引查找符合条件的记录,就需要将where子句中的等值谓词列加入到索引片中,这样索引的过滤能力越强,最终扫描的数据行就越少
2. 我们对数据记录分组或者排序,都需要重新扫描数据记录,为了避免进行file sort 排序,可以把group by 和 order by 中涉及到的列加入到索引中,因为创建了索引就会按照索引的顺序来存储数据。
3. 我们取数据的时候,会存在回表情况。回表就是通过索引找到了数据行,但是还需要通过主键的方式在数据表中查找完成的记录。这是因为select所需的字段并不都保存在索引中,因此我们可以将select中的字段都保存在索引中,避免回表的情况。