通过 keys/indices 减小文件大小

Reducing file size via keys/indices

我使用的是 MS Access,所以文件大小是一个真正的限制(我认为是 2 gig)。我是否以最有效的方式节省 space?

tbl1: tbl_NamesDescs

tbl2: tbl_HistStatsSettings

所以使用上面的两个 tables,tbl2 有大约 800k 条记录,并且 Factor 的所有唯一可能性都列在 ColName 中(即 ColName 和 Factor 之间存在一对多的接受关系)。当我查看 Datasheetview 中的 tables 时,我看到 Factor 和 ColName 中列出的所有名称(全文)。

问题: 这是保存 space 的最佳方法吗?我认为 Factor 应该是与 ColName 对应的索引列表(数字,而不是文本)。

换句话说,由于数字小于文本,用 pid_NamesDescs 自动编号填充 Factor 不是更高效吗?如果这是真的,实现这一目标的最佳方法是什么(MS Access 中的步骤或 VBA 是我在这里之后的步骤)?

编辑:添加 table 真实存在的名称和 pid 名称

是的,将 FactorID 设为数字而不是文本将节省 space。我真的无法回答是否是 "best" 方式,但它肯定会节省 space.

最简单的方法是运行以下查询:

Update tbl2 LEFT JOIN tbl1 ON tbl2.Factor = tbl1.ColName
SET tbl2.Factor = CStr(tbl1.PID_tbl1)
WHERE Not IsNull(tbl1.ColName)

然后,在设计视图中将 "factor" 的数据类型更改为 Long。然后我还将字段的名称更改为 "FactorID" 并将 "ColName" 的名称更改为 "Factor." 我会对 column/table 进行一些其他更改(尽管您为清楚起见,可能会提供假名)名称。

或者制作一个辅助列(如您在评论中建议的那样长整型)并更新辅助字段,然后删除原始字段。

然后,进入关系 table 并添加 tbl1.PID_tbl1 和 tbl2.FactorID

之间的关系

在此之后,压缩并修复数据库以减小大小。

*编辑以添加有关添加 table 之间关系的部分。

除了标准化之外,还要检查所有文本字段。短文本的默认值为 255 个字符。当您在文本字段中存储的字符少于 255 个时,确保字段大小设置为不超过您通常存储的字符数。更改后,执行压缩和修复以减小文件大小。尽可能使用短文本代替长文本。

还可以考虑一种拆分数据库的方法,其中数据在后端,UI 和 VBA 在前端。