mysql索引笔记

索引是帮助mysql高效获取数据的排好序的数据结构

1.二叉树:数据大层级变高,IO多

2.红黑树:插入和删除需要维持平衡,数据量大了层级不可控

3.B-tree:节点中也有数据,每一次加载到内存中的数据变少

4.B+tree:非叶子节点不存data,可以存放更多的索引,叶子节点用指针连接,提高区间的访问性能

5.hash:对索引的key进行一次hash计算就可以定位除数据存储的位置,很多时候Hash索引(O(1))比B+tree索引效率要高,但是hash所有只能满足"=","IN"查询,范围查询(O(N)),而且还有hash冲突的问题

myisam(非聚集索引)

非聚集索引:索引和数据分离

myisam索引文件与索引和数据文件是分离的(非聚集),磁盘中包括3个文件,frm:表结构,MYD:数据在磁盘中的地址,MYI:数据索引,查找时,先根据索引去myi文件中去找到数据的地址,然后根据地址再去myd中找到data

 

innodb(聚集索引):文件包括idb和frm

聚集索引:叶子节点包含了完整的数据记录的索引,数据和索引在一起

问:为什么INNODB表必须建立索引,而且推荐使用整型的自增主键?

答:必须有主键来建立B+tree,如果没有,则会选择一列唯一的数据自动创建索引,如果没有唯一的一列数据,则会建立一列rowid来建立索引(隐藏列)。整型所占用空间少,使用自增插入元素不会破坏原来的结构(分页和维护平衡),插入效率高

innodb二级索引(非主键索引):叶子节点存放的时数据和自增索引,非整型按字母顺序排序

最左前缀索引:联合索引中存在,从左往右一一字段比对,不能跳过第一个字段去根据其他字段进行查询,否则不会用到索引造成全表扫描(排序是根据第一个字段去排序的,然后根据第二个字段排序...)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值