B-树的优势
1、将磁盘IO的低效操作通过内存中数据比较进行替换.
在二叉树中,我们一次只能加载一个关键字进行匹配.但是在B-树,我们一次可以加载N个关键字,若我们将磁盘块(节点)的空间大小固定(MySQL中定义为16KB).磁盘块能存储的关键字个数就会与单个关键字内容占用的空间相关.基于预读和操作系统磁盘交互特性.我们磁盘1O一次加载的内容正好都是我们需要比对的内容.将内容的多次10加载转换成在内存中进行数据的比较合理的降低树的高度,减少IO的次数
在树形结构中数据的所处高度位置,将带来IO的次数不一样.B-树结构合理的降低了树的高度.也就意味着数据的IO次数将降低
如果在Innodb类型的表中不仅有主键索引也包含其他的二级(辅助)索引.此时数据的搜索过程又是怎么样的呢?
从上图中,我们知道.在辅助(二级)索引的叶子节点上保存的数据是主键索引的值.若此时我们的查询条件是基于
name的条件进行查询,首先我们会基于辅助索引的树进行一次比对和查询,查询到结果之后,拿到主键索引的值.
再基于主键索引进行二次搜索进行数据的返回.这样的二次扫描的过程我们称之为回表。
覆盖索引
覆盖索引能够提高查询性能,减少不必要的回表操作。