1.聚簇索引
- 将数据和索引存储在一起,即聚簇索引的叶子结点存储的是数据本身。而非聚簇索引叶子结点仍然是索引节点。它们要查询到对应数据块可能需要二次查询。
- 一张表只允许存在一个聚簇索引,默认根据主键创建聚簇索引
2. 覆盖索引
- 在InnoDB中,非聚簇索引查询到的结果只是这条数据的id,然后我们还需要根据这个id进行查询聚餐索引才能找到要查询的数据,所以需要两遍索引查询
- 覆盖索引就是将频繁的查询条件字段和查询结果字段组成一个索引,这样这个索引项相对数据项存储空间也比较小,但是其中已经包括了所需要的结果,就不用二次查表
- 当查询的数据被索引覆盖了,即使没有满足最左前缀法则,也会使用上聚集索引, 因为查询索引被查询数据快。