SQL Server建议将分段的gl帐户代码存储在数据库中

时间:2013-11-04 00:21:10

标签: c# sql sql-server entity-framework

我的任务是对我们的订单系统进行改进,该系统需要导入分段的GL帐户代码,以便在订单的各个订单项上进行分配。

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

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

我打算使用Entify Framework 6从表中支持这些查询,但是使用sql函数来了解当GL帐户代码存储在一列时性能可能是什么。表现并不像我希望的那么好。

是否有人建议如何最好地存储此数据(可能有200,000个代码)。您是否觉得我可以使用EF进行查询并期望获得高效的结果?

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您使用包含三列的表,则可以存储值级联,从而使您的查询更容易,也可能更快。为什么你的团队希望将它存储在一个专栏中,它有什么优势?

如果你有

ID    码    ParentCodeId

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

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

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