数据库索引键uk_不懂数据库索引原理?因为你心里没有一点B树

416e97c8a630c8b02ae7941242e60bdb.png 什么是B树? 416e97c8a630c8b02ae7941242e60bdb.png

B树是一种数据结构它按排序顺序在其节点中存储数据,B树存储数据使得每个节点按升序包含密钥,这些键中的每一个都有两个对另外两个子节点的引用,Te左侧子节点键小于当前键右侧子节点键多于当前键,如果单个节点具有n个键则它可以具有最大n+1个子节点。

9e0ceb82520c2973a5e3387977eccffc.png

416e97c8a630c8b02ae7941242e60bdb.png 为什么索引在数据库中使用? 416e97c8a630c8b02ae7941242e60bdb.png

想象一下您需要在文件中存储数字列表并搜索该列表上的给定数字,最简单的解决方案是将数据存储在数组中并在新值到来时附加值,但是如果需要检查数组中是否存在给定值则需要逐个搜索所有数组元素并检查给定值是否存在,如果你足够幸运你可以在第一个元素中找到给定的值,在最坏的情况下该值可以是数组中的最后一个元素,我们可以将这种最坏的情况表示为渐进符号中的O(n),这意味着如果您的数组大小最多为n则需要执行n次搜索才能在数组中查找给定值。

adad9f169999b6a387265118eb9de21f.png

你怎么能改善这个时间?最简单的解决方案是对数组进行排序并使用二进制搜索来查找值,每当您向数组中插入一个值时它应该保持顺序,通过从数组中间选择一个值来搜索然后将所选值与搜索值进行比较,如果所选值大于搜索值则忽略数组的左侧并搜索右侧的值反之亦然。

b3f346568a3e01de34f9508aab433824.png

416e97c8a630c8b02ae7941242e60bdb.png 如何在数据库中使用索引? 416e97c8a630c8b02ae7941242e60bdb.png

当B-tree进入数据库索引时这个数据结构变得有点复杂,不仅有一个键还有一个与键相关的值,该值是对实际数据记录的引用,密钥和值一起称为有效负载。

2381ba1bc3330c6f49d80ef877fc741a.png

416e97c8a630c8b02ae7941242e60bdb.png 结论 416e97c8a630c8b02ae7941242e60bdb.png

数据库应该有一种有效的方式来存储读取和修改数据,B树提供了插入和读取数据的有效方法,在实际的数据库实现中数据库同时使用B树和B+树来存储数据,用于索引的B树和用于存储实际记录的B+树,除了二进制搜索之外B+树还提供顺序搜索功能,这使数据库能够更好地控制数据库中的非索引值。

416e97c8a630c8b02ae7941242e60bdb.png 数据库调优集训课 416e97c8a630c8b02ae7941242e60bdb.png 为了让大家更快的了解和熟悉数据库调优,给大家推荐一门高级架构师Zilor的在线直播课程~Zilor老师拥有12年软件开发经验,7年大型互联网架构经验。

8abfff59026c85b74774c29496a2e89c.png

扫码进集训学习群 7月14日~16日,Zilor老师将带领大家复盘数据库调优的经典场景,从原理到实战,干货满满,让大家快速掌握数据库调优的技巧。

b6fa8744f52b2d4b4d3f30e6769f7c26.png

416e97c8a630c8b02ae7941242e60bdb.png 集训课课程目录 416e97c8a630c8b02ae7941242e60bdb.png

5a0d3e6af330c2d7956bdd7ef4e069e7.png

416e97c8a630c8b02ae7941242e60bdb.png 听课送福利 416e97c8a630c8b02ae7941242e60bdb.png

70cfcb0faae60091dca2efb52a94e3bd.png

b4b92ca6ea8305c5e956c1b731165a52.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值