索引总结

为什么mysql 的 innoDB 选择 使用 B+ tree作为索引的数据结构

B + tree VS B tree

  • 存储相同数量级别的情况下,B+ tree 的树高比B tree低,磁盘IO次数少
  • B+ tree叶子节点用双向链表串联起来,适合范围查询

B + tree VS Hash

  • 虽然hash的等值查询效率很高,但无法做到范围长查询
  • hash会有hash碰撞发生

什么时候适合使用索引

  • 字段具有唯一性,比如商品的编码
  • 常用于 Where 查询的字段
  • 经常用于 group byorder by的字段

什么时候不需要索引

  • 数据量少
  • 索引字段常更新
  • 字段中存在大量重复的数据
  • where order by group by 用不到的字段

什么时候索引会失效

  • 使用 左或者是左右模糊匹配的时候 like %xxx like%xx%
  • 查询条件中存在计算、函数、类型转化操作
  • 没能遵循最左匹配原则
  • 在where字句中,如果 or 前的条件 是索引列,而在 or 之后为非索引列

索引总结
http://example.com/2023/11/06/索引总结/
作者
Forrest
发布于
2023年11月6日
许可协议