1

我已经通过 int 定义了各种文本值。我将 int 值存储在数据表中以便更好更快地搜索。我有三个选项来显示文本值:

  1. 我在代码中声明 Enum 并根据 int 值显示文本值。它是静态的,如果要添加新值,我必须更改代码。

  2. 为了使其动态化,我可以将 int 和 text 值存储在另一个数据库中的表中,并由管理员拥有它。管理员可以在此表中更新新值。每当获取记录时,我都会使用内部联接来显示文本值。

  3. 我将实际文本存储在相应的数据表中。这会使搜索变慢。

我的问题是在以下情况下最好使用哪个选项?

  1. 数据表有超过 1 到 1000 万条记录。
  2. 有 5000 多个用户在表上进行获取、搜索、更新过程。
  3. 最大文本值为 12 个数字和长度(最大)50 个字符。
  4. 具有上述条件和功能的数据表有30个。
4

3 回答 3

1

我喜欢选项 #2 和选项 #1 的组合 - 使用 int 但在另一个数据库中有字典表。
让我解释:

  • 将 int 和 text 存储在另一个数据库中的表中;
  • 在原始表中仅存储 int;
  • 不要从另一个数据库连接表以获取文本,而是在客户端缓存字典并从该字典中解析文本
于 2012-10-05T13:56:49.753 回答
1

由于给出的原因,我不会选择选项 1。枚举不作为查找存在。您可以将 1 替换为创建字典,但每次进行更改时都需要重新编译它,这很糟糕。

如果保证像这里那样重复很多,那么将文本存储在表格中(即选项 3)是不好的。这正是您应该使用第 2 条建议的查找表的地方。

所以是的,将它们存储在数据库表中并通过它来管理它们。

如果只是到一张小桌子,加入应该不需要很长时间。如果您担心,另一种方法可能是在第一次需要时将查找表加载到代码中的字典中,并从您的小型查找表中查找代码中的值。我怀疑你只是通过加入来做这件事会遇到问题。

无论条件如何(即记录数等),我都会采用这种方法。不过,条件确实使它更明智。:)

于 2012-10-05T13:58:10.863 回答
0

如果您确实拥有数百万条记录,那么几乎可以肯定,尝试在服务器代码或客户端以任何形式构建这样的结构是没有意义的。它需要保存在数据库中,恕我直言。

创建列表的查询需要足够智能,以将返回记录的计数限制为可管理的数量。也许分区视图或存储过程可能在这方面有所帮助。

如果这主要是一个只读列表,并且仅在管理活动的上下文中进行更新,那么应该可以在客户端使用适当的索引和查询非常快速地对表进行查询。

于 2012-10-05T13:58:00.420 回答