【问题标题】:Is there an effcient hierarchy method for storing a large tree in a SQL table?是否有一种有效的层次结构方法可以将大树存储在 SQL 表中?
【发布时间】:2011-07-07 05:45:56
【问题描述】:

我有一个包含超过 500 万行的表,其中包含分层数据(约 20 个级别)。该表每年都呈指数增长,并且从表中进行 CRUD 操作的递归方法变得缓慢。该表接收大量更新、读取和删除。有谁知道任何适合替换当前邻接列表模型的数据模型,或者如果有的话可以采取哪些步骤来加快表格速度?

【问题讨论】:

    标签: sql sql-server-2008 database-design optimization


    【解决方案1】:

    您是否查看过 SQL Server 2008 及更高版本中可用的 HierachyID 数据类型。 http://technet.microsoft.com/en-us/library/bb677290.aspx

    在这本来自 MS Press 的免费电子书中有一个很好的部分介绍了它的使用

    http://blogs.msdn.com/b/microsoft_press/archive/2009/11/16/free-e-book-introducing-microsoft-sql-server-2008.aspx

    【讨论】:

    • 我喜欢 HierachyID 的东西! +1
    【解决方案2】:
    1. 500 万行不算什么。

    2. 设计良好的邻接列表模型和设计不佳的邻接列表模型之间存在差异。如果你发布你的 DDL,也许我们可以改进它,而不是你扔掉整个概念,因为实现很差。

    3. 无论如何,我不会使用这样的模型在关系数据库中实现树结构或层次结构。我已经使用了数百次(忽略历史),而且速度非常快。如果您提供表和所有索引的 DDL,我可以专门为它提供模型。

    数据模型

    ▶Tree Structure Data Model

    不熟悉关系建模标准的读者可能会发现▶IDEF1X Notation 很有用。

    【讨论】:

      【解决方案3】:

      也许分层或图形数据库会是更好的选择。 SQL 并不总是答案 - 这就是为什么 NoSQL 是一个可行的利基市场。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多