InnoDB 为什么设计 B+ 树索引?


两个考虑因素:

    InnoDB 需要执行的场景和功能需要在特定查询上拥有较强的性能。
    CPU 将磁盘上的数据加载到内存中需要花费大量时间。

为什么选择 B+ 树:

    哈希索引虽然能提供O(1)复杂度查询,但对范围查询和排序却无法很好的支持,最终会导致全表扫描。
    B 树能够在非叶子节点存储数据,但会导致在查询连续数据可能带来更多的随机 IO。
    而 B+ 树的所有叶节点可以通过指针来相互连接,减少顺序遍历带来的随机 IO。
    普通索引还是唯一索引?
    由于唯一索引用不上 change buffer 的优化机制,因此如果业务可以接受,从性能角度出发建议你优先考虑非唯一索引。

0 0
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
帮助