这是我的情景:
我有一个(让我们称之为)节点的表.每个主键只是"node_id".
我有一个维护节点层次结构的表,只有两列:parent_node_id和child_node_id.
层次结构在单独的表中维护,因为节点可以具有N:N关系.也就是说,一个节点可以有多个子节点和多个父节点.
如果我从一个节点开始并想要获得它的所有祖先(即层次结构中的所有东西),我可以做多次选择,或者在一个存储过程中完成所有操作.
任何对这个问题有实际经验的人都知道哪一个可能有最好的表现?我在线阅读了两种推荐方式.
"哪一个可能有最好的表现?":没有人能够知道!你唯一能做的就是尝试和MEASURE.令人遗憾的是,所有与性能相关的问题的主要答案......除非您在算法之间明显存在O(n)差异.
顺便说一句,"多个父母"并不构成一个等级(否则我会建议阅读Joe Celko的一些书)但DAG(直接无环图)是一个更难以驯服的野兽......