您现在的位置是:主页 > news > 上海网站设计方案/快速优化网站排名软件
上海网站设计方案/快速优化网站排名软件
admin2025/4/20 4:32:57【news】
简介上海网站设计方案,快速优化网站排名软件,做网站二级域名随便用吗,网站建设的界面风格有哪些一、引擎简介mysql的innodb引擎索引数据是一起存放,一张表是按主键顺序存放的索引组织表,如果没有主键,会有个rowid,按rowid顺序存放的。mysql的myisam引擎索引和数据是分开存放的,索引里面存的是数据地址的指针。二、…
一、引擎简介
mysql的innodb引擎索引数据是一起存放,一张表是按主键顺序存放的索引组织表,如果没有主键,会有个rowid,按rowid顺序存放的。
mysql的myisam引擎索引和数据是分开存放的,索引里面存的是数据地址的指针。
二、innodb引擎下的索引
1.索引类型
索引默认使用的b+树,也有hash索引,hash索引适合场景等值查找比较快,所以B+树使用的比较多,大家简单了解下,b+树是多叉平衡树,叶子节点存具体的数据,叶子节点又组成了一个链表,非叶子节点存索引。不过注意下,主键索引叶子节点存整条数据,非主键索引叶子节点存的是主键的值。
2.什么叫覆盖索引?
就是索引里面包含了主键,、
而索引里面的主键的好处是什么呢?
如果联合索引不包含主键,通过前面的简单了解,我们知道数据在主键索引上,我们首先遍历联合索引树,拿到主键值,再根据主键值去主键索引树拿具体的数据,这个过程叫做回表。
如果联合索引的包含主键,就不需要这个回表过程,效率不就杠杠的了吗
3.什么叫最左匹配原则
譬如索引是(a,b,c)
1)select * from t where a = 1 and b =2 and c =3 能用上这个索引。注意:与where条件的a的顺序无关,只要where条件里面有个a这个条件
2)select * from t where b =2 就不会用索引
这就是最左匹配原则
例:表总共行数是12
这里有个问题就是第二条语句为什么用不上这个索引呢?
因为是b+树是有序的啊,它是按索引的里面第一个值排序,当一个值相同时,按照第二个值排序,依次类推,第一条语句查找进行a的比较,a相同在b的比较,依次类推。
所以索引的选择是很重要,根据具体的业务场景来选择,注意:索引过多又要占用磁盘,因为索引和数据最终都要存在磁盘上,增删改又要维护这颗索引树来保证有序性,