Mysql的几种索引分析

一、为什么用 B+ 树做索引而不用哈希表做索引?


√ \color{#FF7D00}{√}  哈希表是把索引字段映射成对应的哈希码然后再存放在对应的位置,这样的话,如果我们要进行模糊查找的话,显然哈希表这种结构是不支持的,只能遍历这个表。而B+树则可以通过最左前缀原则快速找到对应的数据。

√ \color{#FF7D00}{√}  如果我们要进行范围查找,例如查找ID为100 ~ 400的人,哈希表同样不支持,只能遍历全表。

√ \color{#FF7D00}{√}  Hash冲突,会导致出现很长的链表,导致查找时间增加。

二、主键索引(聚簇索引)与非主键索引(二级索引)


√ \color{#FF7D00}{√} 主 键 索 引 \color{#01B468}{主键索引} 的索引列唯一且不能为空;一张表只能有一个主键索引。

√ \color{#FF7D00}{√} 主 键 索 引 \color{#01B468}{主键索引} 的 b-tree 的叶子节点存放的是 整 行 数 据 \color{#01B468}{整行数据}

   非 主 键 索 引 \color{#005AB5}{非主键索引} 的叶子节点存放的是 主 键 的 值 \color{#005AB5}{主键的值}

  所以,在查询的时候,使用 主 键 索 引 \color{#01B468}{主键索引} 的效率要比使用 非 主 键 索 引 \color{#005AB5}{非主键索引} 的效率高(因为 非 主 键 索 引 \color{#005AB5}{非主键索引} 会进行 回 表 \color{#005AB5}{回表} )。

√ \color{#FF7D00}{√}  为什么建议使用 主 键 自 增 \color{#01B468}{主键自增} 的索引?

  因为 B+ 树是有序的,所以自增插入时,直接插入到 最 右 侧 \color{#01B468}{最右侧} 即可;中间数插入时,B+ 树需要变形,也可能

  会出现 分 页 \color{#01B468}{分页} 时的变形。

三、非主键索引(二级索引)


√ \color{#FF7D00}{√} 唯 一 索 引 \color{#9F4D95}{唯一索引} :索引列的值必须是唯一的,但允许有空。

√ \color{#FF7D00}{√} 全 文 索 引 \color{#9F4D95}{全文索引} :用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

√ \color{#FF7D00}{√} 普 通 索 引 \color{#9F4D95}{普通索引} :就是普通索引…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w_tt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值