【发布时间】:2011-07-07 05:45:56
【问题描述】:
我有一个包含超过 500 万行的表,其中包含分层数据(约 20 个级别)。该表每年都呈指数增长,并且从表中进行 CRUD 操作的递归方法变得缓慢。该表接收大量更新、读取和删除。有谁知道任何适合替换当前邻接列表模型的数据模型,或者如果有的话可以采取哪些步骤来加快表格速度?
【问题讨论】:
标签: sql sql-server-2008 database-design optimization
我有一个包含超过 500 万行的表,其中包含分层数据(约 20 个级别)。该表每年都呈指数增长,并且从表中进行 CRUD 操作的递归方法变得缓慢。该表接收大量更新、读取和删除。有谁知道任何适合替换当前邻接列表模型的数据模型,或者如果有的话可以采取哪些步骤来加快表格速度?
【问题讨论】:
标签: sql sql-server-2008 database-design optimization
您是否查看过 SQL Server 2008 及更高版本中可用的 HierachyID 数据类型。 http://technet.microsoft.com/en-us/library/bb677290.aspx
在这本来自 MS Press 的免费电子书中有一个很好的部分介绍了它的使用
【讨论】:
500 万行不算什么。
设计良好的邻接列表模型和设计不佳的邻接列表模型之间存在差异。如果你发布你的 DDL,也许我们可以改进它,而不是你扔掉整个概念,因为实现很差。
无论如何,我不会使用这样的模型在关系数据库中实现树结构或层次结构。我已经使用了数百次(忽略历史),而且速度非常快。如果您提供表和所有索引的 DDL,我可以专门为它提供模型。
不熟悉关系建模标准的读者可能会发现▶IDEF1X Notation◀ 很有用。
【讨论】:
也许分层或图形数据库会是更好的选择。 SQL 并不总是答案 - 这就是为什么 NoSQL 是一个可行的利基市场。
【讨论】: