Skip to content

Commit 7d4eba0

Browse files
committed
mysql
1 parent c6bbb24 commit 7d4eba0

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

MD/数据库-MySQL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ MyISAM相对简单所以在效率上要优于InnoDB。如果系统插入和查
5151

5252
使用B+树来构建索引,为什么不用二叉树?红黑树在磁盘上的查询性能远不如B+树。原因是红黑树最多只有两个子节点,所以高度会非常高,导致遍历查询的次数会多,又因为红黑树在数组中存储的方式,导致逻辑上很近的父节点与子节点可能在物理上很远,导致无法使用磁盘预读的局部性原理,需要很多次IO才能找到磁盘上的数据;但B+树一个节点中可以存储很多个索引的key,且将大小设置为一个页,一次磁盘IO就能读取很多个key,且叶子节点之间还加上了下个叶子节点的指针,遍历索引也会很快。
5353

54-
B+树的高度如何计算?在Linux里,每个页默认4KB,假设索引的是8B的long型数据,每个key后有个页号4B,还有6B的其他数据(参考《MySQL技术内幕:InnoDB存储引擎》P193的页面数据),那么每个页的存储个数为为4KB/(8B+4B+6B)=1100万。通常来说,索引树的高度在2~4。
54+
B+树的高度如何计算?在Linux里,每个页默认4KB,假设索引的是8B的long型数据,每个key后有个页号4B,还有6B的其他数据(参考《MySQL技术内幕:InnoDB存储引擎》P193的页面数据),那么每个页的扇出系数为4KB/(8B+4B+6B)=227,即每个页可以索引245个key。在高度h=3时,s=227^3=1100万。通常来说,索引树的高度在2~4。
5555

5656
#### 优化
5757
如何选择合适的列建立索引?

0 commit comments

Comments
 (0)