Mysql是用数据图结构存储数据吗?比如说我: insert into table (name) values ("Peter")
. Peter是否以图的形式存储?如果是这样,而我: 。select from table where name="peter"
如何找到彼得?它是否使用 纵深搜索 或 深度初探?
事情是这样的,我正在学习BFS和DFS,但是......我想知道,如果把数据保存到数据库中,而只是访问数据,那就方便多了,那么学习它的意义何在?
也不是。
如果是这样,我做:select from table where name="......也不是。name
列是有索引的,MySQL将值存储在B+树中。查找 "peter "这个名字不需要使用BFS或DFS。它可以在 O(log n)
时间,直接遍历树的分支到 "peter "的值。
如果 name
列没有索引,MySQL会对表进行扫描,搜索表的每一行,并将表的 name
属性为值 "peter"。属性存储在聚类索引中,聚类索引也是一棵B+树。
B+树与B树不同的是,叶子节点有一个指向下一个叶子节点的指针。所以MySQL做表扫描时,先找到第一个叶子节点,然后在 O(n)
时间,只访问其他叶子节点。它不需要做BFS或DFS来访问每个叶子节点。