B+ 树 类似于分层索引 , B+ 树的特点是 深度低,一个节点可以存多条数据
mysql 会根据主键生成一颗b+树索引, 同时最低一层数据是实际数据,数据通过双向链表连接起来。
主键b+树也称为聚集索引,通过链表的方式聚集起来
最左原则,最左边的字段一定要有才能命中索引。 (中间的兄弟可以断,断了也可以起到所以缩小检索区域的作用)
最左原则的原因是: 建立索引时需排序,多字段索引时,排序规则的大小比较规则是先比较第一个,相等再比较第二个,类推, 如果所有字段都相等,再比较主键。 所以最左原则里要求命中索引是第一个字段必须有,如果有后面字段必须连起来。
同时 like 也是一样的,如果 like的内容里最左边给的是 %,将没有办法比较大小,如果like内容最左边有实际内容,就可以进行比较,将不会进行全表扫
整理来说最左原则是有其排序规则决定的。
每个索引建立时都会生成一颗B+树
InnoDB 引擎, 建立的非聚集索引,会将非聚集索引的所有字段保存,同时保存主键字段。 通过非聚集索引找到主键,然后通过主键找到对应内容。
这里实际经过了两步索引
在sql前加 explain ,可以显示sql将走哪些索引,这个在写sql时非常好用
查询时,如果查询类型与实际字段类型不一致,mysql里面会将字符转换为数字进行比较,不过最好是不要如此处理