什么是索引?
在这个数据结构网站上,我们可以自行绘制如下截图的图,感受数据结构的魅力。
二叉查找树:
红黑树:其实是一直平衡二叉树、特殊的二叉树。缺点是树高不可控,太高查找很慢。
B+树:优点树高不会太高,会水平动态扩展,水平链表结构快速查找。
MySQL索引如何实现?
可以看到MyISAM引擎是三个文件,frm文件是表结构可以忽略,innodb是两个文件。
MyISAM引擎索引结构是怎么样的?如下(需要二次查询磁盘寻址,叶子节点存的是磁盘数据地址) 非聚集索引
InnoDB引擎:聚集索引 普通索引会回表查询。主键索引不会回表。
索引命中的规则:靠左对齐的原则。
覆盖索引:将被查询的字段,建立到联合索引里去
select id,name,sex where name=lisi
name KEY升级为(name, sex)联合索引
但是,别滥用覆盖索引 索引太多,属性太多,会占用缓冲池 降低查询效率
为什么必须用InnoDB,而不是MyISAM?