![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNV1ppTjJKaE1UUTRNRFkyTkRJeE5qbGxOek01TXpOak9EZ3hPV0ppWWpFPS5qcGc%3D.jpg?w=700&webp=1)
小史:树的话,无非就是前中后序遍历、二叉树、二叉搜索树、平衡二叉树,更高级一点的有红黑树、B 树、B+ 树,还有之前你教我的字典树。
红黑树
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaR1V3WXpSbU56WXdPR0ptTkRjM05HRmpNak5rWkdOak5qWmtNek0wWXprPS5qcGc%3D.jpg?w=700&webp=1)
一听到红黑树,小史头都大了,开始抱怨了起来。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOelU1WkRsa1lURTFPVFF4TkdGaE1tSmxZamhoWmpVMk5UVXpaRGhrWlRNPS5qcGc%3D.jpg?w=700&webp=1)
小史:红黑树看过很多遍了,但是每次都记不住,它的规则实在是太多了,光定义就有四五条规则,还有插入删除的时候,需要调整树,复杂得很。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZek5rT0RFNVlqSTVNRFk0TkRBNFl6bGlPVFU1TWpJM1kyUTBZbU14WkdVPS5qcGc%3D.jpg?w=700&webp=1)
吕老师:小史,问你红黑树,并不是让你背诵它的定义,或者让你手写一个红黑树,而是想问问你它为什么这样设计,它的使用场景有哪些。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNbVExTldVeU56VTNObU00TkdNeU5XRTFNalkyTldVMk5qa3dZVFUwTURBPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOamRpWWpGaE9XRTNPRE0xTkdRM016ZzBOMk5qWmpBd09EQTFabVZtTTJNPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZbVkyWldJMU56azRZMkl5TkdFMVpqa3dPRGt3WkRJNVpXVTFaakJtWVRJPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNEa3VjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZelprT0dNME0yWXlZemhqTkRJM1pqazBaR1EwTVdRM1pXSXpOVGN4TkRFPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZMlZrTldWbU9HSmtOMk16TkRSbE1HRmxaV0UyTVdZMVlqWXdOelUxWkRZPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaREUxTXpNd056TmpNVFprTkRGak56a3hZVFV6TkdFMU9HWXlOekV3TjJNPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOV1F6TVdVeU9UYzVNbVUxTkdNeE1UZzRNRGxoT0dGa01EVXhaalEyTnpZPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaREl6T0dReU1qYzFZV1l3TkRneVltSXdabUU1TmpKalkyRXhZemhrTkdVPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNMkkxWkRRMU1UYzBZVGs0TkdVME1EazJORE5rTUdVNVpUTTNPRE5qTlRFPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaakk1TnpWak9XVTFOREZpTkRZME4yRXdOamxoT1ROaFlXSTNZMkZqTVRjPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOemMxTVRNM056RXlOV0k1TkRNek1HRXlNRFZoTURSaE16WTVNVGRtWm1JPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZPVE5oTWpJeE56WTVOR1ExTkdWaE56aGlZMlE1TlRrek5XUXdNREU1WldJPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNVEU1TkdZM1l6YzNNRE0yTkdNeU56bGpPVGhtTm1VNFlUaGhaVGsyWkRBPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZemMwTXpsaU1HRmxPR1EyTkdVNE5tSXdObUV6TldVMk1HSTBZV1F4TVRVPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZelEyT1dZMFlXWmhNbU01TkRReU0yRXdabVV5TVRZM1ptTTFaakl5WW1NPS5qcGc%3D.jpg?w=700&webp=1)
B 树
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZabUkyTVRZeU9UZzFNVEE1TkdRek1HSTVNREl4TkdJNE9ETXpZek5qWTJVPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZelV6T1RCbU5EVXhNbVJsTkRNeVptSXhNelZtTkRkaVl6ZGtaV001TUdRPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNbUUwTURWbVptTXhNamRrTkRBNU1HSm1NRGs1TVRnd1pESTJOR0U1WXpFPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNV1JrTXpFek1USTJOakUyTkRJeFl6azRZVGhrWWpsaE9XVXlaamt6WmpNPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOMkk0WWpsbFlqUTFOV0ZrTkdKaU9XRmlaVGd3TVRjeFlqTmxNbVV3TXpjPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNbUV5TnpVeU1qQmtaVEEyTkRabFlUazFabVV3T0dGaE5EWTFZbVZpTkRrPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNV1UzTmpGaU1qWmtOR0U0TkdVek1tSmxNREptTW1Rd1pqVTVaVEJoT0RJPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNakE1WmpnMk5qTXlNREUzTkRNMk1qbGxOall5WVRjd1l6VTJZVFppTkRRPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNVFV6T1RWbU5Ua3hObUUwTkdVMlpEaGhZVFprWkRJNE5XUXlabUUxWWpFPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZPVGcxWWpNeE1EUTVaVGN4TkdFeE1EazBOMkUyTjJVM1l6bGtaVFJrTm1VPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNakkyTVRoaFlUQXpOR00wTkRCaFpEa3hNVFEzWWpnek1XRTJZekkxWkdJPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNEa3VjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZV00zWXpJME5HSmtOV0l5TkRFNE4yRm1PVEl6WWpjNVlqQmxNbUl6T0RRPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOamMxTWpBME56Vm1OMk13TkRjek5EaGxabUpqTnpKall6YzFaVFF4WmpnPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaV0ptTmpsak5HSTNabUZpTkRsbU5XSmlNMkZsTlRnMU1EUTRNVEk0WkdRPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOV05pTm1abU1ERTNORFkyTkdKaVpqZzFaRGt5WXpJd01HWTBOemc0WTJZPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZakF6TVRGaU5UVmxabVk0TkRnNE0ySXhNVFF3TldNMFl6TTRZVEU0TkRZPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNVE0zWXpKalpUVmxaak13TkdKaFpHSXhOVE01T0RWbE0yWTJZakptT1RFPS5qcGc%3D.jpg?w=700&webp=1)
吕老师:小史,你要知道,文件系统和数据库的索引都是存在硬盘上的,并且如果数据量大的话,不一定能一次性加载到内存中。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZek5oWWpFeU56VXlZalE0TkdNMU1UaGxNVFl5TlRNek5HUTNZMk15TXprPS5qcGc%3D.jpg?w=700&webp=1)
两个月前,小史面试没考虑内存情况差点挂了。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNEa3VjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaRGcwTVRrek1tSXdPRFppTkdWaFpXRm1PVGt4T0RRNE5HUXdZV1ptT1RVPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOVGsyTmpJM1pqWTJObUk0TkRoaE9HRTROMlEzTkRnek1HVXdOV1UzT1RBPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZPV1kxT0RZNU1XWTFNek5sTkRNek1XRmtPVGswWkdWa05XSTJaV015TXpBPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNakEzTldWaFpXSm1PRGM1TkRGa01qbGpNMlZoWkRRME9USmhaVGRtTXpFPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNbVpoWXpRd05qWXlZelF4TkRObFltSmhOamd5TlRRNU0yWXlZamxoTXpjPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOamxoTldOa1pUTTBZVFptTkRnM05qbGxaRFkxT0RJMk5HSXlOV1kyT0RFPS5qcGc%3D.jpg?w=700&webp=1)
B+ 树
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaRFJoTlRVeE1tRTVaR1UxTkRjME9EaG1NbVJsT0RJNVpEVTBabVkyWkdZPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZVEk1WmpKbE0yTmhNelJqTkRrMk4yRXpPRFJqT0Raak1qbGlNbVF3WkRrPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNEa3VjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZelZrTkRBNE4yWTBPRGswTkRrek9EaG1NbVUxWW1Rek9UWm1abU0yTXpBPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZbVprTmpWalltWXlZVEJpTkdVeE5UZzNNek0zT1RZeE1HRTFObVEyTWpBPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZNbUUwWkRBM01XTXhZMk14TkRWa05HRTJZbVJqT0dJeE1tUmhaalE1WTJNPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOV1V4TWpnellqWmxNRGhqTkdNd05HRmtPRE5qTWpZeE1XSmxZMkUxT0RrPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZakk1TVRGallUQTVNbVk0TkRNd1pqZzFOekF5T0RJelptSmxOREJsWVRnPS5qcGc%3D.jpg?w=700&webp=1)
吕老师:这也是和业务场景相关的,你想想,数据库中 Select 数据,不一定只选一条,很多时候会选多条,比如按照 ID 排序后选 10 条。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNEa3VjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaV0UzTVdFNU5USXdZekppTkRrd1kySXdPRGN5TXpSaFl6Wm1ObU5tTTJNPS5qcGc%3D.jpg?w=700&webp=1)
小史:我明白了,如果是多条的话,B 树需要做局部的中序遍历,可能要跨层访问。
而 B+ 树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZZbUV6WmpZMU5tWmpZamN4TkRSaE5tSTVOelJsTkdVeVptUXdOV1poT1RnPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNEa3VjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaRGsxTjJJMU1qTmlOekE0TkdVek1tRTNZbVk0WVRZMU9UVTNORGcxTTJNPS5qcGc%3D.jpg?w=700&webp=1)
回到现场
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZabVkyWldJNVkyRmtNVEZtTkdFeFl6aGhaRGxtTWpWbE1UVmxaV0k1TldJPS5qcGc%3D.jpg?w=700&webp=1)
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNERXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZaR0ZsWVRGaU5XSTBZMlkyTkdRM09UZzVNemMzTnpNd01XUmhOelUwTm1ZPS5qcGc%3D.jpg?w=700&webp=1)
小史:这和业务场景有关。如果只选一个数据,那确实是 Hash 更快。但是数据库中经常会选择多条,这时候由于 B+ 树索引有序,并且又有链表相连,它的查询效率比 Hash 就快很多了。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOMlUyWmpJM05UVXpOMlZpTkRFM01EZzRZemhrTnpneU5qTmpNV0l4WlRjPS5qcGc%3D.jpg?w=700&webp=1)
小史:而且数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次装入内存,B+ 树的设计可以允许数据分批加载,同时树的高度较低,提高查找效率。
![为什么MySQL数据库要用B+树存储索引? 为什么MySQL数据库要用B+树存储索引?](https://image.shishitao.com:8440/aHR0cHM6Ly9iYnNtYXguaWthZmFuLmNvbS9zdGF0aWMvTDNCeWIzaDVMMmgwZEhBdmNETXVjSE4wWVhSd0xtTnZiUzlzWVhKblpTOXdaMk10YVcxaFoyVXZOelJoWm1ReE4yRTVPV05qTkdKbU1Ea3dNRE0wT0RRd09UQXlZVE15T1RrPS5qcGc%3D.jpg?w=700&webp=1)