索引

2020-05-21  本文已影响0人  无限骄傲

主键索引

索引 B+ 树,结构是由结点16kb的页组成

非叶子节点存的是目录记录页,内部结构为单向链表,顺序排序,链表中每个节点存放一个数据类型,其中, 0为用户数据类型,1为目录记录页,2为本页最小值,3为本页最大值,树中个个节点是双向链表。

主键索引的叶子节点存放的数据是数据本身,包括主键和其他所有数据,也包括隐藏数据,row num等,属于聚簇索引

普通索引

只存放主键和索引的值,属于非聚簇索引

组合索引

最左原则  组合索引中,会根据索引的字段顺序进行依次排序,比如字段a  b  c 先按a排序,大小相同,再按b排序(实际b也会产生一课树)再按c以此类推。所以查询时候,要先确定a位置,才能使用b查询条件,否则就要遍历所有的页。

命中索引 

查询条件顺序,要按照索引顺序,

单一原则. (要保证是用a本身值作为条件,比如where a=4/2 而不能写作where a*2=4)

like语句要遵守最左

使用范围查找时,where a小于10and b>52

不会命中组合索引,只有a=10and b>52才会命中

索引叶子结点只会存储主键和组合索引的值,如果要查询其他的值,要通过主键去主键索引查询,回表操作

索引用途

基数较大时候,就是这个值作为索引时候,最好出现不同的值次数较多

用于分组

用于排序 建立索引时候会进行排序

优化索引

不使用重复索引比如有 a b c就不用建立a

减少索引的值得长度,比如a存储数据长度为100我们可以只取20可以减少建立索引和遍历索引时候的io复杂度

上一篇 下一篇

猜你喜欢

热点阅读