SQL的层次结构是深度优先与广度优先:使用一个而不是另一个



我知道Breadth First SearchDepth First Search。我读了这个页面,也在SO上,我发现了这个问题,这个问题也是。

我想知道的是一些实际的场景,我会使用深度优先而非广度搜索。虽然我提供的第三个问题链接有点相似,但我的问题更倾向于t-sqlSQL Server 2008/2012的性能。

此外,如果我使用一个而不是另一个,有人能给我举个例子吗?我能对性能产生多大影响(最坏的情况)?比方说,如果我采用dfs,并且我在第一个节点中有50个子节点,并且我正在搜索第二个节点,那么dfs将比我所能想到的慢大约50倍,因为它首先必须遍历50个子对象,然后它将到达第二个节点。是这样还是不这样?我的意思是,这就是表演的直接关系吗?

最后,再次重复我的问题,尽管它可能(很可能)是特定于应用程序和需求的,但我想知道一些实际情况,在这种情况下,我会使用其中一个而不是另一个,选择其中一个的性能成本可能是多少?另外,我在维护一个分类目录,我应该选择什么?比方说,我正在维护一个图书类别目录,比如:science => physics => astronomy等等,哪一个会是最好的?dfs还是bfs

您基本上回答了自己的问题。根据数据,使用最有可能首先访问所需节点的搜索方法。

最新更新