【发布时间】:2011-12-29 11:58:20
【问题描述】:
我有一个使用 Entity Framework 4 和 SQL Server 2008 R2 的 .NET 应用程序,其中所有数据访问层都将由 EF4 管理。
我有一个金融交易表:交易,其中有一列状态,可能的值是:已打开、已发布、已验证、已关闭。该表将一直被访问以进行插入、更新和读取。我需要在这张桌子上达到更好的性能。
标准的解决方案是用Id(int)、Name(varchar)创建一个TransactionStatuses,并在Transactions和TransactionStatuses之间建立关系.
但现在,我正在考虑另一种解决方案:仅创建具有列 Status(int) 的 Transactions 表,并创建一个 Status 仅接受 1、2、3、4 的约束。并且,在我的应用程序代码上创建一个枚举,其中 Opened = 1、Release = 2、Verified = 3 和 Closed = 4。
从性能角度来看,第二种解决方案是更好的选择吗?
【问题讨论】:
-
您是否希望在查询中返回字符串名称?或者提供任何允许编辑状态名称或添加新名称的管理界面?
-
不,Db 中的名称仅供参考。管理界面只会使用状态,不会编辑或新建。
标签: .net sql-server performance sql-server-2008 entity-framework-4