通过 keys/indices 减小文件大小
Reducing file size via keys/indices
我使用的是 MS Access,所以文件大小是一个真正的限制(我认为是 2 gig)。我是否以最有效的方式节省 space?
tbl1: tbl_NamesDescs
- pid_NamesDescs <-autonumber
- ColName <-文本字段,索引:是(无重复)
- 描述 <- 文本字段
tbl2: tbl_HistStatsSettings
- pid_HistStatsSettings <-autonumber
- 因素<-文本字段
- 等...(其他领域)
所以使用上面的两个 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 在前端。
我使用的是 MS Access,所以文件大小是一个真正的限制(我认为是 2 gig)。我是否以最有效的方式节省 space?
tbl1: tbl_NamesDescs
- pid_NamesDescs <-autonumber
- ColName <-文本字段,索引:是(无重复)
- 描述 <- 文本字段
tbl2: tbl_HistStatsSettings
- pid_HistStatsSettings <-autonumber
- 因素<-文本字段
- 等...(其他领域)
所以使用上面的两个 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 在前端。