因此,在我的工作场所,他们有一个巨大的访问文件(与MS Access 2003和2007一起使用)。文件大小约为1.2GB,因此打开文件需要一段时间。我们不能删除任何记录,我们有大约100多个表(每个月我们创建4个表,不要问!)。如何改进这一点,即缩小文件大小?
答案 0 :(得分:5)
你可以做两件事:
链接表本身不会限制数据库的整体大小,但会将其“打包”在更小,更易于管理的文件中。看一下:
'File' menu + 'Get External data' + 'Linked tables'
链接表还有许多优点,例如允许保留多个版本的数据子集,以及通过链接表管理器选择特定集。
压缩数据库会回收因各种CRUD操作(插入,删除,更新...)对存储进行分段而丢失的空间。它还重新组合表和索引,使搜索更有效。这是通过
完成的'Tools' menu + 'Database Utilities' + 'Compact and Repair Database...'
答案 1 :(得分:2)
你真的在努力克服MS Access的限制 - 你知道文件不能超过2GB吗?
我认为您已经通过额外的规范化检查了数据是否可以节省空间?您可以将前几个月的某些表“归档”到单独的MDB文件中,然后将它们(永久地或根据需要)链接到您的“当前”数据库(在这种情况下,您实际上可能会受益于可能是一个糟糕的决定每个月开始新表。)
但是,有了这么多的数据,现在可能是时候开始计划转移到更宽敞的平台了。
答案 2 :(得分:1)
您应该考虑您的数据库架构。如果表之间没有任何链接,您可以尝试将其中一些链接移动到另一个数据库(每年一个数据库:)作为短期解决方案..
答案 3 :(得分:0)
嗯..听听@Larry,请记住,从长远来看,你必须找到另一个数据库来保存你的数据!
但从短期来看,我对这个“每月4张新桌子”的事情感到非常不安。每月4张桌子每年50张......这对每个“数据库管理员”来说肯定听起来很奇怪。所以请告诉我们:有多少行,它们是如何构建的,它们的用途是什么,以及为什么每个月都要构建表格?
根据您对数据的处理方式,您还可以考虑将某些表存档为XML文件(甚至是XLS?)。这对于“历史”数据是有意义的,不需要通过关系,视图等来访问。一个很好的例子是从PABX收集的电话呼叫列表。可以通过ADODB记录集或transferDatabase方法
将数据保存为/从XML / XLS文件加载答案 4 :(得分:0)
每月添加更多表格:这已经是一种可疑的态度,并且似乎对数据规范化存在疑问 如果你这样做,我怀疑你的数据库结构在字段大小,数据类型和索引方面也是次优的。我真的要先仔细检查一下。
如果你真的有月度表的理由(我再也无法想象),为什么每个月都没有1个后端?
您也可以使用主后端,比如说,在线提供3个月的数据,然后是存档数据库,您可以在其中传输旧记录。
我将它用于事务,主表有大约650.000条记录,而Access非常敏感。
答案 5 :(得分:0)
一些“抓住稻草”的想法
查看每列的数据类型,您可以将一些数字存储为每个记录保存少量的字节
查看索引并删除不使用的索引。在大表上,不必要的索引会增加大量的开销。
我会+ 2 ^ 64关于数据库设计的建议有点奇怪,但没有任何未说过的内容所以我不会说明这一点