是否有一种有效的层次结构方法用于在SQL表中存储大型树?

时间:2011-03-02 12:14:16

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

我有一个超过500万行的表,其中包含分层数据(~20级)。该表每年都呈指数级增长,表中CRUD操作的递归方法变得越来越慢。该表收到大量的更新,读取和删除。有没有人知道任何适合替换当前邻接列表模型的数据模型,或者有什么步骤来加速表格?

3 个答案:

答案 0 :(得分:3)

您是否查看了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

答案 1 :(得分:2)

  1. 五百万行什么都没有。

  2. 精心设计的邻接列表模型与设计糟糕的模型之间存在差异。如果你发布你的DDL,也许我们可以改进它,而不是你抛弃整个概念,因为实现很差。

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

  4. 数据模型

    ▶Tree Structure Data Model

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

答案 2 :(得分:1)

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