mysql是用BFS还是DFS?

问题描述 投票:0回答:1

Mysql是用数据图结构存储数据吗?比如说我: insert into table (name) values ("Peter"). Peter是否以图的形式存储?如果是这样,而我: 。select from table where name="peter" 如何找到彼得?它是否使用 纵深搜索深度初探?

事情是这样的,我正在学习BFS和DFS,但是......我想知道,如果把数据保存到数据库中,而只是访问数据,那就方便多了,那么学习它的意义何在?

mysql database graph depth-first-search breadth-first-search
1个回答
1
投票

也不是。

如果是这样,我做: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来访问每个叶子节点。

© www.soinside.com 2019 - 2024. All rights reserved.