我们使用具有名为 docid 的列和名为 parentid 的列的表将文档之间的关系存储在 Oracle 数据库中。如果我有一个与子文档 child1_1 和 child1_2 相关的文档 doc1,它们将由 Documents 表中的以下记录表示。
docid parentid
1000 null record for doc1
1001 1000 " " child1_1
1002 1000 " " child1_2
Documents 表可以有数百万行,因此为了确保在我们的 UI 中将所有相关文档分组在一起,我们使用名为 sortedfamily 的索引 varchar 列对 Documents 表进行预排序,并使用相关文档的 docid 的串联填充它. 不使用 sortedfamily 列在查询时对记录进行排序太慢。上面显示的记录变成了。
docid parentid sortedfamily
1000 null 1000 record for doc1
1001 1000 1000_1001 " " child1_1
1002 1000 1000_1002 " " child1_2
这允许我们在查询中添加“ordered by sortedfamily”,并且返回的记录将始终按相关文档排序。我上面概述的效果很好,但它有一些与文档族层次深度相关的限制,并且感觉很奇怪连接整数来对记录进行排序。有没有办法只使用整数来完成上述操作?
提前致谢。
更新:我上面的例子不够详细。孩子们自己也可能有相关文件。如果 child1_1 有相关文档,则 sortedfamily 的结果值可能是“1000_1001_2000”。