A-K*_*A-K 21 sql-server-2008 sql-server hierarchy
是否有人在实际生产中使用 HierarchyId 使用合理大小的表,超过几千行?它可靠/性能好吗?到目前为止,我还没有发现任何与供应商无关的人推荐它,并且 Paul Nielsen在这里建议不要使用它。
您在实际生产系统中使用 HierarchyId 的经验是什么?
当您选择 HierarchyId 而不是其替代品时,您使用了哪些标准?
我已经实现了 HierarchyID 并发现它提供了良好的性能并且易于使用。
我已经将它用于相对较小的数据集(数万行),其层次结构高达 10 个分支深。
为什么要使用它?HierarchyID 类型提供了许多辅助方法(例如IsDescendantOf),它们使您的工作比滚动您自己的具体化路径更容易。
Paul Nielsen 对 StackOverflow 的评论让我感到困惑——HierarchyID是一个具体化的路径。我更倾向于同意他的回答下面的这个评论。
一个更好的问题可能是“为什么不使用它”。它易于使用,提供了许多您本来可以自己编写的功能,并且性能良好(在我有限的测试中)。
这是对 Kirk 问题“为什么不使用它 (HierarchyId)”的回答。与实体化路径相比,在某些重要情况下,HierarchyId 似乎性能较低,使用起来也不太方便。
原因很简单:引用Microsoft 对 Connect 的评论,“问题是 CLR 调用,包括hierarchyID 的方法,对查询优化器来说是不透明的。这是设计使然。但是,这意味着它们的基数估计有时可能相当错误的。”
另一方面,实现物化路径在我们第一次需要时非常容易,下次它本质上是一个复制和粘贴任务。因此,我们只需很少的努力即可获得更通用、性能更好的解决方案。
所以我完全同意 Paul Nielsen,他在他的优秀著作《Microsoft® SQL Server® 2008 Bible》中写道:“新的 HierarchyID 并非没有争议。它是新的,获得了大量的新闻和演示时间,但我'我不确定这是一个需要其他解决方案的问题。”
| 归档时间: |
|
| 查看次数: |
8549 次 |
| 最近记录: |