Ms access 如何确定Access数据库中哪个表使用的空间最多?

Ms access 如何确定Access数据库中哪个表使用的空间最多?,ms-access,Ms Access,有没有简单的方法来确定Access 2007数据库中每个表使用了多少空间 我有一个非常大的Access数据库,需要找出哪个表使用了最多的空间。行计数不能提供足够的已用空间信息。对于正常运行的Access数据库,您可以使用一个简单的工具来显示表和索引所需的内存量。请注意,我自己还没有尝试过这个工具 一旦你发现了最大的桌子,你的目标是什么?您的MDB有多大?你最近把它压实了吗 当你压缩它时它收缩了多少?也就是说,您是否在其中创建和删除了许多表/记录?如果是这样,请查看我的网站上的说明如何在应用程序中

有没有简单的方法来确定Access 2007数据库中每个表使用了多少空间


我有一个非常大的Access数据库,需要找出哪个表使用了最多的空间。行计数不能提供足够的已用空间信息。

对于正常运行的Access数据库,您可以使用一个简单的工具来显示表和索引所需的内存量。请注意,我自己还没有尝试过这个工具

一旦你发现了最大的桌子,你的目标是什么?您的MDB有多大?你最近把它压实了吗

当你压缩它时它收缩了多少?也就是说,您是否在其中创建和删除了许多表/记录?如果是这样,请查看我的网站上的说明如何在应用程序中使用临时MDB


您在表中使用了很多图形吗?

这实际上是一个有趣的问题,因为Access使用可变长度的记录来存储数据

要准确地做到这一点,最好的方法是遍历表中的每个记录和每个字段,并将字段的长度相加。如果桌子很大,可能需要一段时间。由于索引和关系,它不会增加大小

在我们的Total Access Analyzer程序中,我们有一些报告使用简单的记录大小估计乘以记录数来提供表大小的估计。此处显示了一个示例:

这可能足以进行大致估计或相对规模比较


另一种可能也是非常准确的度量方法是创建一个新数据库并将表导出到其中。压缩数据库并从中减去空白数据库大小以获得表的大小。 我使用的是Access 2003,很容易获得表记录计数。表记录计数表示表大小的大小。记录越多,尺寸越大。 如何获取表记录计数

  • 通过Access 2003打开数据库
  • 单击选项卡“数据库工具”
  • 单击“数据库文档管理工具”(可能是其他名称)
  • 单击“全部”,然后单击“确定”
  • 您将看到一个新的白色背景页面,显示所有表格的表格信息。通过单击“txt”(在Word图标下)导出为txt
  • 您将把TXT保存到一个文件中。让我们把它命名为tableinfor.txt
  • 通过txt编辑器打开“tableinfo.txt”。搜索关键字“记录计数”。 我想你知道哪张桌子占空间最大

  • 您可以将每个表分别复制到单独的Access数据库中,然后比较每个表的大小。虽然它不能给出表本身的确切大小,但每个文件的大小显示了每个表的大致大小。

    我知道这是一篇老文章,但我有一个解决方案,基于我自己对同一问题的经验。我的解决方案是将所有表导出为文本文件。每个文本文件的大小大致与它在mdb/accdb文件中使用的空间成比例

    下面的代码将在当前数据库文件夹下创建一个子文件夹“temp_table_size”,并将所有表导出到其中。您可以向其传递一个参数,以仅处理本地表。完成后,它会告诉您导出了多少个表,并询问您是否要打开该文件夹。按大小对文件夹进行排序,您将快速识别罪犯。我使用此例程查找在部署之前可能忘记清除的表,或者帮助我了解在继承其他人的数据库时大表的位置

    为了使这个例程对我来说更加方便,我将此代码添加到Access加载项中,以便可以针对任何数据库运行它。该外接程序还具有导出所有其他Access对象的功能,以便我可以查看哪些表单/报表占用了数据库中的空间。如果有兴趣的话,也许我会找个地方分享

    Public Sub-DocDatabase_表(可选BolloCalTables仅作为布尔值=False)
    '====================================================================
    '名称:DocDatabase_Table
    '用途:将此数据库中的表导出到一系列
    '文本文件。每个文本文件的大小将为您提供
    '了解哪些表使用最多的磁盘空间。
    '
    作者:本·萨切里奇
    “日期:2011年5月2日
    '====================================================================
    关于错误转到错误处理程序
    如果此操作失败,请将dbs作为“数据库”或变体。
    将td设置为TableDef
    作为字符串的Dim strSaveDir
    模糊lngObjectCount尽可能长
    暗计数等于长
    作为字符串的Dim strMsg
    Dim varReturn作为变体
    设置dbs=CurrentDb()'使用CurrentDb()刷新集合
    '导出到当前数据库文件夹的子文件夹。
    strSaveDir=CurrentProject.path&“\temp\u table\u size”
    如果Len(strSaveDir)>0,则
    strMsg=“此功能将此数据库中的所有表导出到一系列”_
    &“逗号分隔的文本文件。每个文本文件的大小将为您提供”_
    &“了解哪些表使用最多的磁盘空间。”&vbCrLf&vbCrLf
    '获取表的计数,减去系统表。
    如果bolLocalTablesOnly=True,则
    lngObjectCount=DCount(“名称”、“MSysObjects”、“类型=1且名称不象'MSys*'且名称不象'~*'))
    strMsg=strMsg&“此数据库中有”&lngObjectCount&“本地表。”_
    &vbCrLf&vbCrLf
    其他的
    '包括本地表、链接表和ODBC表
    lngObjectCount=DCount(“名称”、“MSysObjects”、“键入(1,4,6)和名称不象'MSys*'和名称不象'~*'))
    strMsg=strMsg&“此数据库中有”&lngObjectCount&“表”_
    &“(包括本地、链接和ODBC)。”&vbCrLf&vbCrLf
    如果结束
    strMsg=strMsg&“表将导出到当前数据库的子文件夹:”_
    &STRAVEDIR&vbCrLf&vbCrLf
    strMsg=strMsg&“是否继续?”?