1、b树分析
B树在每个节点上都存有数据,mysql没有选择它作为索引结构。
2、B+树,该结构只在每个叶子节点上存储了数据信息,在每个叶节点上存储的一般是叶子节点的区间信息,这样的存储使得它能存储很多的数据。mysql一般选择它作为索引树的结构。
3、mysql的索引是一个有序,这个能很好的解释大部分的索引失效的情形。
4、如果存储的是联合索引,假如有三个,那么会先按照第一个排序,再按照第二个字段排序,最后按第三个字段排序。当我们使用了这三个字段来作为条件的时候,mysql内部会自动排序,优化。
5、索引失效,原因有两个
1)因为索引字段是有序的,当你去进行索引字段计算的时候,会导致计算后的字段在索引文件中找不到,还有一种情况是%在前的模糊查询,这种也会导致索引后面的这部分信息不是有序的,最终不走索引。
2)mysql的执行计划会去计算执行某个sql的执行成本,当发现全表扫描的时候更加快,就不会走索引,这种情况一般跟查询条件过滤的结果集大小有关,还有就是跟查询的表大小有关。
6、查询的优化
1)一般来说,要优化一个sql需要先确认下查询条件,所以我们一般建立索引最好是在代码开发完后,再根据我们相关的sql文件,去建立索引。
2)聚集索引,这种索引文件因为包含了数据,mysql在查询数据的时候,会把索引文件加载到io中处理,会比较慢。非聚集索引,这种只包含索引信息和指向聚集索引的主键信息,文件一般比较小,但是这种如果要查询非索引字段和非主键字段的时候,会回表去查询对应的信息。
Mysql学习总结
于 2022-08-26 17:36:21 首次发布