关于 Mysql InnoDB 默认索引类型...

2020-09-15 09:49:46 +08:00
 Akiyu

我之前一直看 Mysql 的 官方文档. 所以我一直认为是 InnoDB 的索引默认类型是 B-tree.
(我还记得之前有次面试问我默认类型的时候, 我斩钉截铁说是 B-tree 时. 面试官楞了一下, 然后重复问了一次...)
但是今天突然在某处看到有人讨论 Mysql InnoDB 默认索引类型为什么是 B+tree. 并且下面的回复都没有质疑索引类型正确性... 我突然感觉自己错了.
然后我 google 了一下. 搜索结果

......

这... 感觉自己被官方欺骗了...

我一直视官方文档为第一权威资料. 但这件事可能会让我重新审视一下...

1922 次点击
所在节点    分享发现
9 条回复
FutherAll
2020-09-15 10:03:12 +08:00
官方说的 B-tree 可能是指的 B tree 这一类树,B+ tree 是它的一个变种。
tgich
2020-09-15 10:07:43 +08:00
愣了不是因为 b-tree 还是 b+tree,而是你根本答非所问啊大哥!
索引类型是普通索引组合索引单列索引啥的
b-tree 、b+tree 那是索引的数据结构
tgich
2020-09-15 10:10:37 +08:00
@tgich 还有啥是默认索引类型?
chihiro2014
2020-09-15 10:20:44 +08:00
无论是 B-Tree 也好还是 B+Tree 也好,说的都是对的。因为 B+Tree 早就不是一开始的那个 B+Tree 了,融合了 B-Tree 很多其他变种的特点
chihiro2014
2020-09-15 10:21:18 +08:00
其实很多数据库对于这个描述也是模糊的,但是你可以认为用的都是 B+Tree
FutherAll
2020-09-15 10:25:12 +08:00
```
The use of the term B-tree is intended as a reference to the general class of index design. B-tree structures used by MySQL storage engines may be regarded as variants due to sophistications not present in a classic B-tree design.
```
bluehr
2020-09-15 15:44:10 +08:00
打个岔,楼主不会念成了 b 减 tree 吧(没有其他意思,曾经我以为 btree b-tree b+tree 是三种不同的树,闹笑话了)
Akiyu
2020-09-16 09:19:09 +08:00
@bluehr
哈哈哈, 怎么会, 中间那个 - 只是为了分隔. 不变成 btree 而已.
zagfai
2020-09-17 01:02:07 +08:00
那个是 hyphen 不是 minus 吧 哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/707056

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX