索引类型
索引类型分为主键索引和非主键索引。(一定要牢记,是怎么存储数据的)
1、 主键索引的叶子节点存的是整行数据。在InnoDB里,主键索引也被称为聚簇索引(clustered index)。
2、 非主键索引的叶子节点内容是主键的值。在InnoDB里,非主键索引也被称为二级索引
(secondary index)。
聚簇索引
聚簇索引默认是主键,如果表中没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引。
因为B+TREE的原因,最好使用连续的整数字段,更好确定查找访问范围
回表
根据上面的索引结构说明,主键索引和普通索引的查询区别
1、 如果语句是select * from T where ID=500,即主键查询方式,则只需要捜索ID这棵B+ 树;
2、 如果语句是select * from T where k=5,即普通索引查询方式,则需要先搜索k索引树,得到ID的值为500,再到ID索引树捜索一次。这个过程称为回表。
覆盖索引
如果执行的语句是select ID from T where k between 3 and 5,这时只需要查ID的值, 而ID的值已经在k索引树上了,因此可以直接提供查询结果,不需要回表。也就是说,在 这个查询里面,索引k已经“覆盖了”我们的查询需求,我们称为覆盖索引。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.