0

我的任务是增强我们的订单系统,这将需要导入分段的 GL 帐户代码以分配给订单的各个行项目。

我需要支持通过segment1、segment2等查询代码,以便加载级联下拉框供用户分配。GL 代码将有一个或多个由一个字符分隔的段。代码的示例是“1010.1034001.99.01”。

我已经将几千个代码加载到一个表中,用于测试整个字符串值存在于一列中(由一个字符分隔)的位置。我创建了两种函数变体,它们返回segment1 值等于某个参数的行。该查询还通过为其他段值提供附加参数来支持进一步查询。

我打算使用 Entify Framework 6 从表中支持这些查询,但使用 sql 函数来感受当 GL 帐户代码存储在一个列中时的性能。性能没有我希望的那么好。

有没有人对如何最好地存储这些数据有建议(可能有 200,000 个代码)。你觉得我可以使用 EF 进行查询并期望得到高性能的结果吗?

层次结构对这些数据更有意义吗?我们的团队希望将分隔值存储在一列中。

提前致谢。

4

1 回答 1

2

如果您要使用具有三列的表,则可以级联存储值,从而使您的查询更容易并且可能更快。为什么您的团队希望将其存储在一个列中,这有什么优势?

如果你有

ID 代码 ParentCodeId

其中 ID 是唯一键,ParentCodeId 是对该唯一 ID 的可为空引用,您可以按如下方式拆分您的示例代码:

ID  Code     Parent
1   1010     null
2   1034001  1
3   99       2
4   01       3

通过在导入代码时应用一些逻辑,您可以检查代码是否已经作为所需级别的父级存在,因此您不必重复它们,这样您就可以通过选择选择来获取所有以 10100 开头的代码g在 parentID 1 上。

于 2013-11-04T00:30:52.520 回答