索引
建立索引就是对数据进行排序,排序就是比较大小,B+树其实就是帮助我们排序的一种数据结构。
使用索引
where条件能否利用索引本质上就是看此条件能不能和某个B+树索引进行比较大小。
B+树
B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一颗B+树包含根节点、内部节点和叶子节点。B+ 树通常用于数据库和操作系统的文件系统中。 B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。 B+ 树元素自底向上插入。
主键索引
[图片上传失败...(image-2109eb-1585493000834)]
其他索引
[图片上传失败...(image-10b319-1585493000834)]
select * 时,最后会进行回表操作(主键索引找叶子节点)
最左前缀原则
本质上就是对由多个字段联合组成对复合字段进行比较大小,类似字符串比较大小,只有给定了最左侧的字段,才能去比较后续的字段。
全表扫描
在Innerdb中,表中所有的行数据都在主键索引的叶子节点中,所以全表扫描就是扫描主键索引的叶子节点。
覆盖索引
对于某一个SQL在执行时,如果发现所要查询的数据在某一个索引上也存在时(除开主键索引),那么就可以直接利用这个索引进行查询获取数据,而不需要回表。
索引条件
当某些条件因为不符合最左前缀原则时,无法参与索引的执行时,在Mysql5.7之前,该条件会在索引数据回表后在Mysql Server层执行然后过滤数据;而在Mysql5.7之后,该条件会在索引执行后,回表前执行过滤条件,相当于该条件的执行下沉了,也可以叫索引条件下推。
Mysql运算
在Mysql中,数字于字符串进行运算时,统一会将字符串转换成数字,非数字字符串会统一转化为0.