innodb 引擎索引 (一)
mysql的索引就像是一本书的目录,就是为了提高数据的查询效率。
innodb的索引树为B+树,每个索引对应一颗B+树,索引是按照有序排列的,所以每次查询不用扫描整个索引树。
而索引又分为主键索引和普通索引,普通索引和主键索引的区别是:普通索引要比主键索引多一次回表。下面通过一个例子讲一下。
例如有以下的sql:
- 如果语句是 SELECT * FROM user WHERE ID=600 ,这句sql会直接搜索ID这个索引的B+树,即主键查询方式。
- 如果语句是SELECT * FROM user WHERE k=5,k是普通索引,则会走一遍普通索引树,得到id的值是600,再去主键索引树搜索一次。
也就是说,在应用中尽量使用主键索引。主键索引也称为覆盖索引。
B+树的索引规则是将数据按照索引字段里定义的顺序进行排列的,也就是说是有序的,只需要找到最左边的相似的数据,然后向后遍历就能得到。这就是“最左前缀”。
例如下面这图
当你的逻辑是查到所有名字是“张三”的人时,可以快速定位到ID4,然后往后遍历下去。
另外,5.6以后的mysql还支持了索引下推,这样就不用再回表判断数据正不正确,直接在普通索引遍历中对包含的索引字段进行判断,直接过滤掉不满足的条件。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: