【问题标题】:accdb vs mdb. Which is faster/better?accdb 与 mdb。哪个更快/更好?
【发布时间】:2010-11-13 23:36:14
【问题描述】:

有没有人有使用 Access 2007 和以前版本的 Access(即 mdb 文件)的经验。

我们已升级,但仍在使用 mdb 格式。我们的一些代码(特别是 Docmd.TransferDatabase acImportReport)现在非常慢。

我尝试了初始测试并将我们的客户端 mdb 转换为 accdb,上面的 TransferDatabase 似乎表现更好。

我现在想知道我们是否应该硬着头皮转换构成应用程序的所有其他文件。不需要复制或用户级别的安全性,这似乎是旧版本新版本的唯一限制。我们有一个客户端 mdb、三个后端数据库,然后是 3000 个 mdb,每个 mdb 都包含一个报告(不要问!)。

新版本的执行速度是否比旧版本快——尤其是在已经陷入困境的网络上)?

【问题讨论】:

  • MDB 是 Access 2007 中的本机格式,因此 MDB 文件根本不是“先前版本”文件。 Access 2000、2002、2003 和 2007 格式的 MDB 都是 Access 2007 原生的。
  • 我的猜测是性能的提升来自于创建一个新文件。尝试创建一个新的 MDB 并将所有内容导入其中,我敢打赌它会比旧的 MDB 前端执行得更快。
  • 2007年做了一个新的mdb并导入了很多。使用 accdb 文件仍然更快......
  • 请注意,当您将 mdb 转换为 accdb 时,Access 会在不询问的情况下替换某些引用。例如,旧的 DAO 将被替换。

标签: ms-access ms-access-2007


【解决方案1】:

对包含 187 篇中等长度学术参考文献的数据库进行的快速测试显示,大小从 1,671,168 字节减少到了 1,306,624 字节。

这是一篇有一些优点和缺点的文章:

Access File Formats: ACCDB vs MDB

他们用 .accdb 指出,你可以:

  • 在您的数据库中包含附件
  • 使用多值字段
  • 允许 SharePoint 和 Outlook 信任这些文件,因为“[i]改进了数据库安全模型 [允许对数据库文件进行安全验证”
  • 由于使用了 Windows Cryptographic API,假设密码学得到了改进

这是一篇 M$ 文章,讲述了如何将附件作为数据库记录字段:

Attach files and graphics to the records in your database

第一篇文章还说:“在使用 ACCDB 时,您还应该考虑两个限制。ACCDB 数据库不支持用户级安全性或复制。”我复制了一个数据库,它打开了,没问题 - 即使在不同的目录中;所以我不知道你在复制方面错过了什么。

注意:我无法将其另存为 .accdb 文件,如第一篇文章中所述。我做了文件 |保存并发布,它让我。

【讨论】:

    【解决方案2】:

    我非常怀疑 ACCDB 与 MDB 相比是否有很多性能改进,尽管我认为个别功能可能更好或更差。我这样说是因为最大的瓶颈通常与网络有关。

    我建议运行计时测试。比较两者。确保 MDB 是 A2007 格式。在测试之间退出 MDB/ACCDB,否则 Access 可能会缓存数据。多次运行测试,如果有任何重大差异,请继续重新运行它,直到您在大约相同的时间内运行 3 次。

    只是好奇。为什么你们做 Docmd.TransferDatabase acImportReport 这么多?或者是您的 3000 个 MDB 中的一部分,其中包含报告?

    【讨论】:

    • 正确。它是我们 3000 个 mdb 的一部分。我们有一个应用程序支持针对不同客户的大量不同报告。这些是在运行时根据正在运行的报告导入的。最初这些都在一个大型 mdb 中,但是一旦您与该数据库有多个连接,导入它们就会非常缓慢。为每个 rpt 设置单独的数据库会快得多。
    • 我认为其中一个人尝试为所有报告制作库/mda,但运气不佳。这些报告必须进行大量调整,因此我们只需更改网络上的报告,客户就会选择新的报告。就我个人而言,我不是当前设置的忠实拥护者,因为我们不能使用 mde,甚至不知道我们所有的代码都可以编译。
    【解决方案3】:

    在 accdb 中做任何新的事情(接口方面);在 MS SQL Server 中创建的任何新数据库。

    将现有的东西留在 mdb 中;如果它现在可以工作,为什么要搞砸它。硬件升级将弥补您遇到的任何性能下降。

    MS 迟早会宣布他们将在当前版本的 MS Access 中停止支持 mdb;此时值得进行分类并开始转换为新格式。但不要让数据库 accdb。将其移至 MS SQL Server 之类的东西。

    我之所以会等到你被 MS 强迫,是因为你现在不太可能得到钱包持有者的批准来进行这些更改;但是当你也用力时,他们的荷包就松了。

    【讨论】:

    • 啊啊。我们很想迁移到 SQL Server,但我们在业务领域而不是技术领域工作。如果您愿意,RAD 可以开发,因此我们仅限于 Excel 和 Access 等桌面工具...50 多个用户在一个 500MB mdb 上通过一个令人震惊的网络 - 我很高兴我不是最终用户之一!
    • 我说如果 ACCDB 具有您真正需要的功能(例如 Sharepoint 集成),请使用 ACCDB。如果没有,即使是新项目,也请继续使用 MDB,因为您可以在所有以前版本的 Access 上运行它,回到 2000,而不用担心每个人都将他们的工作站升级到 A2007。
    • 感谢大卫(以及“本地”与“先前”)。每个人都升级了......现在他们正在考虑为所有 PC 获得更多 RAM。
    • MT,SQL Server 不一定只是技术领域的业务,因为它的名称中包含 Server 一词。将它放在 SQL Server 上也可能会为他们带来改善。特别是如果查询可以在数据传回客户端之前在服务器上运行。
    • @David W. Fenton:accdb 格式正在接收 mdb 格式不是的错误修复,例如DECIMAL 排序错误 (support.microsoft.com/kb/837148) 和 MS 没有公开这一事实,所以你怎么知道?这就是为什么最好为新项目采用新格式。除了 Access2007 之前的项目之外,mdb 格式已被正式弃用。
    猜你喜欢
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2014-04-02
    • 2013-11-28
    • 2010-10-11
    • 2013-09-10
    相关资源
    最近更新 更多