Mysql面试题

1、聚簇索引和非聚簇索引区别?
聚簇索引:数据按索引顺序存储,数据行的物理顺序与列值得顺序相同。
非聚簇索引:存储指向真正数据行对的指针。

2、说一说你对mysql索引的理解?
索引是主要用来加快数据的访问,提高数据查询的效率。它的效率高主要是来源于它存储的数据结构是B+树。
Hash:它的数据结构是数组 + 链表,优势是查询速度很快。缺点是需要设计出一个优良的hash算法用来解决hash冲突问题,它只能存储Key,查询之后需要回表查询,存储是无序的,排序效率低。
二叉树:树节点分为左右两个分支,树的深度会随着数据量的增大而增大,非平衡树还有可能退化成链表,平衡树最终避免不了树的深度问题。深度越高查询IO的次数就会越多。所以二叉树是不合适的
B-树:磁盘块中除了存储了主键,还存储了当前主键对应的数据。如果一行的数据量较大,那一页16kb的存储能够存储的数据量较小。当数据量很大的时候(比如1000万),此时树的高度很高,读取磁盘IO的次数也会变得很多。
B+树:B+树的特点是非叶子节点不存储数据,存储主键和指针,数据都存在叶子节点。
B+树的高度为3,指针等信息为32B,第一层有512个指针和第二层有512个指针,约26万个指针。第三层指针加数据为1KB,总共存储数据26万*16 约400万数据。
叶子节点的数据结构还是一个双向链表,当进行区间查询的时候,这样又能够提高查询的效率。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值