mysql优化学习;
B+树
注:图是百度找的。
1、区别
根据引擎不同叶子节点存储的数据不一样。MyISAM 叶子节点存储地址,InnoDB存储全部数据。因此理论上MyISAM可以存更多的叶子节点,InnoDB查询速度更快。
MyISAM的叶子节点可以叫做非聚簇(聚集)索引–数据不在一起而是需要根据地址去找,InnoDB的叶子节点属于聚簇(聚集)索引,因为根据key-可以找到这条数据的所有值。
2、InnoDB组合索引
组合索引 多个列的索引
语句 create index index_name on table_name (a,b,c,…);
使用时遵循最左原则
失效: 1、当没有最左侧的列限制时失效
2、隐式失效:类型不匹配时索引失效
3、普通索引、组合索引
无论普通索引还是组合索引,叶子节点均只保留索引的值+主键值。若要想查找别的值则需要回表。
回表: 拿主键再去(B+Tree)查一遍,取出全部数据
4、mysql page_size
InnoDB_page_size 大小默认16kb,即一次加载16kb的索引数据到内存中