在处理不同的Access版本(2002,2003&amp; 2007)时,我注意到使用filename.accdb的给定访问文件的文件大小远大于使用* .mdb文件类型的相同文件大小。< / p>
我通过另存为Access 2000-2003 batabase的方式将文件从2007( .acccdb)转换为2003( .mdb)。
有人会解释原因吗?
另一个问题,对于强大的数据库而言,首选的选项* .mdb或* .accdb文件类型是什么?对于存储的数据是安全的,因为知道由于数据存储,这两种文件类型日复一日地变得越来越大每天。
提前致谢
mhegazy
答案 0 :(得分:5)
实际上,您是否尝试将该应用程序从mdb转换为accDB格式?文件大小不应以表示方式更改。 (所以,请尝试这样的转换)。
事实上,据我所知,存储大小没有任何不同。实际上,转换与紧凑+修复非常相似。由于代码未被编译,整个结果文件可能会稍微小一些。 (在此过程中删除了编译的二进制代码部分)。
因此,作为一般规则,使用mdb文件时,Access 2000以后的文件大小,或者accDB文件的大小不应该不同。
当然,从访问97文件转换是另一回事。 2000年以前的格式不支持国际字符集。 2000年之前没有将文本数据存储为单码(但使用ASCII)。
因此,理论上从较旧的97格式升级到2000格式甚至更高版本实际上可以通过两倍的因子来增加您的存储需求。这意味着保存在数据库中的每个文本字符都需要两个字符(这就是单代码的工作方式)。
为了弥补数据存储要求的这种相当大的增长,并且没有2 gig文件的相应增加,那么在Access 2000及更高版本中引入了数据压缩技术。这种压缩不应与紧凑+修复相混淆。
您可以逐列启用/禁用压缩。例如:
因此,无论此问题如何,与accDB文件大小格式相比,您不应在2003格式文件之间看到任何差异文件大小。存储要求是相同的,唯一原因是您看到差异的原因是由于紧凑+修复和删除转换期间发生的额外“JUNK”。 (实际上你可以通过执行C + R而不是转换来获得SAME文件大小,也可以进行反编译,然后再使用另一个C + R)。
因此,例如,尝试将reduce size mdb转换为accDB - 您注意到该文件没有增加 - 实际上如上所述,在从mdb到accDB的转换期间,OFTEN会看到大小减小。所以这又是由于转换过程中的垃圾清除 - 而不是你使用mdb文件反对accDB文件,而不是因为使用mdb而不是accDB。
如上所述,上述规则的唯一例外是2000之前格式的mdb。它们没有单一代码,因此理论上文本数据应该使用新格式的存储双倍。但是,随着这些文本列的压缩技术的引入,实际上您的商店要求不会增加 - 实际上在某些情况下可能比2000年之前的版本略低,而且没有压缩列。原因是文本数据确实非常好地压缩(压缩)。
至于使用什么文件格式?我会使用给定版本的默认文件格式。所以,在你的情况下,我建议最好使用accDB。
Albert D. Kallal(访问MVP)
埃德蒙顿,加拿大艾伯塔省