索引能提高检索速度,降低维护速度
索引为什么能提高检索速度?
索引将无序的数据变成有序(相对),如果没用索引我们需要遍历双向链表来定位对应的页。有了索引就通过“目录”很快能定位到对应的页上。底层结构是B+树,B+树作为树的一种实现,能够让我们很快地查找出对应的记录。
为什么索引会降低插入、删除、修改等维护任务的速度?
1、B+树是平衡树的一种,是不会退化成链表的,树的高度都是相对比较低的,基本符合矮胖均匀结构,时间复杂度是O(logn)(平衡树是一棵空树或者它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树)
2、如果一棵普通的树在极端的情况下是能退化成链表的(树的优点就不存在了)
3、建索引就是建一棵B+树,因为B+树是一棵平衡树,如果我们对这棵树进行增删改的话是会破坏它的原有结构。所以要维持平衡树,就必须做额外的工作。正是因为这些额外的开销,导致索引会降低增删改的速度。
欢迎批评指正,提出问题,谢谢!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步