![]() |
1
0
CTE方法 有两种方法可以提高针对树数据类型的查询速度。第一个(可能也是最简单的)是使用存储过程和EF的execute sql功能来加载树。SProc将缓存,结果集执行速度将提高。我建议存储过程中的查询使用递归CTE。 http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).aspx
编辑 使用以下命令内联执行存储过程或CTE:
压扁树的结构 第二种方法是构建树的平面表示。您可以将树展开为平面结构以进行快速查询,然后使用平面结构和实际树节点之间的链接来剪切自引用实体。您可以使用上面的递归CTE查询来构建平面结构。 这只是一种方法,但有许多关于这一主题的论文: 编辑:添加附加说明 只是需要注意的是,递归CTE缓存是在遍历结构之前查询的符号。这是编写查询以解决问题的最快、最简单的方法。但是,这必须是一个SQL查询。您可以直接使用execute sql,也可以执行SProc。Sprocs在运行后缓存执行图,因此它们的性能优于必须在运行前构建执行计划的本机查询。这完全取决于你。 树的平面表示的问题是,你必须定期重建或不断维护平面结构。根据您的查询路径,将决定您应该使用什么样的扁平化算法,但最终结果保持不变。平面结构是在EF中“完成”您想要做的事情的唯一方法,而不必通过DBConnection欺骗和执行原始SQL。 |
![]() |
jkfe · 为什么println会在这段递归代码中执行? 2 年前 |
![]() |
Jimmy · 这种算法怎么能按顺序遍历树“爬上”树呢? 2 年前 |
![]() |
AvirukBasak · gcc中无return语句的尾部递归 2 年前 |
![]() |
Dharmik Patel · 使用python递归完全可以整除 2 年前 |
![]() |
W.tan · 一维最短距离递归算法 2 年前 |
![]() |
ncarrawa · 将1添加到i(递归)时出现类型错误 2 年前 |
![]() |
Eren · Python递归何时返回[duplicate] 2 年前 |