问题标签 [hierarchyid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6226 浏览

sql - 关于 SQL Server HierarchyID 深度优先性能的问题

我正在尝试在包含大约 50,000 行的表(dbo.[Message])中实现hierarchyID(将来会大幅增长)。然而,检索大约 25 个结果需要 30-40 秒。

根节点是为了提供唯一性而填充的,因此每个后续行都是该虚拟行的子节点。

我需要能够先深度遍历表,并使 hierarchyID 列 (dbo.[Message].MessageID) 成为集群主键,还添加了一个计算的 smallint (dbo.[Message].Hierarchy) 来存储节点的级别。

用法:.Net 应用程序通过一个 hierarchyID 值进入数据库,我希望能够检索该节点的所有(如果有的话)子节点和父节点(除了根,因为它是填充物)。

我正在使用的查询的简化版本:

据我了解,应该在没有提示的情况下自动检测索引。

从搜索论坛中,我看到人们在处理广度优先索引时使用索引提示,但没有在深度优先的情况下观察到这个应用程序。这对我的场景来说是一种相关的方法吗?

在过去的几天里,我一直试图找到解决此问题的方法,但无济于事。我将非常感谢任何帮助,因为这是我的第一篇文章,如果这被认为是一个“noobish”问题,我提前道歉,我已经阅读了 MS 文档并搜索了无数论坛,但没有找到简洁的描述具体问题。

0 投票
1 回答
1232 浏览

sql-server-2008 - SQL 2008 HierarchyID - 向下选择 X 个后代

如何查询具有数据类型 HIERARCHYID 列的表并获取员工下方 X 级别的后代列表?

这是当前的结构:

0 投票
1 回答
962 浏览

sql-server - 我应该担心 HierarchyID 用完吗?

当您在其他两个之间请求新的 HierarchyID 时,结果会逐渐变长。例如,在 2/5.6 和 2/5.7 之间只有 2/5.6.1 和其他 4 个组件路径。HierarchyID 数据类型限制为 800 个字节,因此您不能永远重复此操作。再说一次,整数类型也是有限的,但在实践中这不是问题。我是否应该定期整理我的表格以使高度不会无限增长?

0 投票
6 回答
28310 浏览

sql-server - 如何使用 SQL Server 2008 hierarchyid 获取节点的所有祖先?

给定具有hierarchyid类型列的表,如何编写查询以返回作为特定节点的祖先的所有行?

有一个IsDescendantOf()函数,非常适合获取孩子,但没有相应的IsAncestorOf()函数来返回祖先(并且缺少GetAncestors()函数似乎是一个疏忽。)

0 投票
1 回答
99 浏览

model-view-controller - 在 MVC 中的下拉列表中排序

我在 MVC 的视图中的下拉菜单有问题。下拉列表中的选项元素来自表,应按 hierarchyId 列排序。我已经制作了一个正确排序的视图,但是当我从视图创建实体并将其用于下拉列表时,排序被忽略。

我发现 L2S 和 EF 不支持 hierarchyId 数据类型,所以这可能是问题所在 - 但必须可以创建视图并使用视图中的排序来正确填写下拉列表?

提前致谢,Steffen Jorgensen,丹麦

0 投票
2 回答
2675 浏览

nhibernate - NHibernate 中的 SQL 2008 HierarchyID 支持

搜索了各种 NHibernate 列表,但没有得出明确的答案。SQL2008 方言似乎不支持 HierarchyID 数据类型 - 只有新的日期和时间类型。

有没有人有一个很好的实现或有效的解决方法?我真的很想在我的新应用程序中利用 HierarchyID。MS 自己的工具严重缺乏对这种有趣且强大的数据类型的支持,所以我对 NHibernate 没有支持并不感到震惊。

一些 方法我还没有深入研究。想知道是否有人对什么有效,什么更高效等有一些经验。

完全披露:我正在使用 Castle ActiveRecord 但这似乎是一个 NHibernate 问题。

0 投票
2 回答
4238 浏览

c# - 在C#中将字符串转换为hierarchyid

我需要能够在 c#.net 中将字符串转换为 hierarchyid - 我不能使用存储过程。

当我传入路径(字符串)时,查询失败,因为路径是这样存储的 '/' 而不是 /

我可以将其转换为另一种类型吗?

——BitKFu

我已经添加了,这是它产生的 sql 查询:

我收到以下错误:ex = {“'/' 附近的语法不正确。”}

--ck

这就是我所期待的

——保罗·鲁安

我已经看过这个页面,但它并没有真正帮助,除非我忽略了什么?

谢谢

克莱尔

0 投票
1 回答
1679 浏览

sql-server - 在 SQL Server 中更新“Hierarchyid”

我在 SQL Server 的一张表中使用了 Hierarchyid 数据类型。

现在我想更改其中一行的父亲,但是当我更改它时,它的所有后代 HierarchyId 都必须根据它进行更改。

是否有这样做的功能,或者我必须自己更改所有功能。如果我需要这样做,最好的方法是什么?

提前致谢

0 投票
2 回答
3386 浏览

sql-server - 无法在对象中插入重复键(GetReparentedValue / hierarchyid)

使用我在网上找到的示例,我创建了一个函数,该函数使用 GetReparentedValue 重新设置子项。

但是,当我运行代码时,出现以下错误:无法在对象中插入重复键。

我明白为什么(因为我正在尝试让孩子重新成为父母,而新父母已经有了孩子,所以我需要知道新父母结构中孩子的 MAX 路径(层次结构),但我不明白我实际上是怎样的打算这样做。

路径 0x58

旧路径 0x

新路径 0x68

添加孩子时我必须这样做,所以我认为需要将其添加到上面的查询中,但我不知道在哪里path + ".GetDescendant(" + lastChildPath + ", NULL)

数据库表

有人有什么建议吗?

提前感谢您的帮助:-)

克莱尔

0 投票
2 回答
729 浏览

sql - 等级问题

我有一个带有 hierarchyid 列的表。它像是:

我想看到这样的名字:

我怎样才能做到这一点?