前言
面试中,经常会问到有关于MYSQL 索引的相关概念,我们之前也都学过有关树的概念、以及二叉树、二叉查找树、红黑树等。这一节,来关注经常是数据库索引中使用的B-树
在说这些之前,我们需要了解时间复杂度以及空间复杂度。
时间复杂度
时间复杂度,用于鉴定一个算法的好坏、很多时候,比如跑一个for 循环一个数组排序,有冒泡、二分法等方法。相比于冒泡。二分法很占优势,为什么呢?因为比较的次数少、并且做的无用功少、所以这个算法就好。
时间复杂度就是为了表示一个频繁度,这个频繁度怎么说呢。就是每执行一次循环,这就是一个频繁。
O(频度)
用O大写字符O表示,而不是零。
常见时间复杂度依次从小到大:
- O(1) 常数阶
- O(logn) 对数阶
- O(n) 线性阶
- O(n的平方) 平方阶
- O(n的立方) 立方阶
- O(2的n次方) (指数阶)
空间复杂度
空间复杂度,一般指占用的内存
时间换空间、空间换时间
这两个完全是可以等价交换的。比如我们想用
消耗时间长、换取占用空间少
这样会使应用程序响应变慢。但是占用内存少消耗大量空间、换取快速的响应
例子:谷歌浏览器
B-树
切记,这里不念做B减数
这里的横岗没有任何意思