mysql面经(持续更新)

本文探讨了MySQL为什么不使用hash索引,原因包括hash碰撞可能导致的查询效率下降和范围查找的低效。虽然存在hash索引,但在进行范围查询时,B+树通常更优,因为它允许快速的顺序访问。聚簇索引与非聚簇索引是数据库中的两种索引类型,前者数据与索引存储在一起,后者则分开。优化数据库查询的方法包括添加合适索引、优化SQL语句和考虑分库分表。
摘要由CSDN通过智能技术生成
1.mysql为什么不使用hash索引?

答:

  1. hash索引需要好的hash函数,如果hash函数不好,会导致hash碰撞,导致数据散列不均匀会让查询效率从O(1)变为O(n)
  2. 当需要进行范围查找的时候需要按个遍历,效率比较低。
2.在mysql里面有没有hash索引

答:有

3.B树与B+树的区别?

答: B+Tree是在BTree的基础之上做的一种优化,变化如下

  1. B+tree每个节点可以包含更多的节点,这个做的原因有两个,第一个原因是为了降低树的高度,第二个原因是将数据范围变为多个缺件,区间越多,数据检索越快
  2. 非叶子结点存储可以,叶子节点存储key和数据。
  3. 叶子节点两两指针相互连接(符合磁盘的预读特性),顺序查询性能更高。
4.聚簇索引与非聚簇索引

答:数据跟索引存储在一起的叫做聚簇索引,没有存储在一起的叫做非聚簇索引。

  1. innodb存储引擎在进行数据插入的时候,数据必须要跟某一个索引列存储在一起,这个索引列可以是主键,如果没有主键,选择唯一键,如果没有唯一键,选择6字节的rowid来进行存储。数据必定是跟某一个索引绑定在一起的,绑定数据的索引叫做聚簇索引。其他索引的叶子节点存储的数据不再是整行的记录,而是聚簇索引的id值。
  2. innodb中既有聚簇索引也有非聚簇索引,MyISAM中只有非聚簇索引。
5. 如何回答面试中问到的优化问题?

答:

  1. 加索引
  2. 看执行计划
  3. 优化SQL语句
  4. 分库分表
  5. 表结构设计
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值