索引总结
为什么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 by
和order by
的字段
什么时候不需要索引
- 数据量少
- 索引字段常更新
- 字段中存在大量重复的数据
where
order by
group by
用不到的字段
什么时候索引会失效
- 使用 左或者是左右模糊匹配的时候
like %xxx
like%xx%
- 查询条件中存在计算、函数、类型转化操作
- 没能遵循最左匹配原则
- 在where字句中,如果 or 前的条件 是索引列,而在 or 之后为非索引列
索引总结
http://example.com/2023/11/06/索引总结/