2015-02-05 46 views
0

我有一个数据库,其中包含来自过去4-5年的数据。数据库已经变得相当大,使用这个数据库的应用程序一直运行得非常慢。我正在寻找从所有表中归档一些数据。这个数据库有16-17个表格,它们之间有相互关系,我正在寻找一种方法来执行存档操作,以便我可以存档/删除数据几年。我尝试阅读关于APPEND和DELETE查询,但我不知道如何将它们应用于多个表。如何在一个访问数据库中的多个表中存档记录

另一个问题是这个应用程序是由其他人创建的我没有足够的关于数据库和表结构方式的知识。任何帮助/建议非常感谢。

+0

这里没有足够的信息来回答这个问题,因为像你一样,我们也是这个DB的新手,但是看不到它。你可以“归档”数据,但这真的是你想要的吗?为什么它慢是更大的问题。数据是通过网络传播的吗?数据是否代表复杂的查询需要很长时间才能运行?数据库有多大?最大的桌子有多大(记录和栏目)?这些连接看起来像什么?您可以看到,除了“归档”旧数据外,还有很多其他内容,因为您可能不想删除任何内容。 – Brad 2015-02-05 17:35:05

+1

如何将数据库的副本作为“存档”进行复制,然后从当前数据库中删除旧数据? – 2015-02-05 18:43:33

+0

你有没有试过反编译数据库? – 2015-02-05 19:01:43

回答

0

您需要做的第一件事就是了解您的数据集。如果你真的“没有足够的数据库知识和表格结构方面的知识”,那么你正在为自己设定一个巨大的失败。

最重要的是确定表格是如何相互关联的。如果最初的设计师能胜任,他应该在数据库中建立关系并强化参考完整性。您需要查看这些关系(请转至数据库工具选项卡并选择关系),或确定数据之间应存在哪些关系。

一旦你确定了你的数据是如何相关的,你需要设置新的归档表来镜像你想要归档的所有表。最简单的方法是右键单击表格,然后右键单击窗格中的其他位置并选择“粘贴”。你会得到一个盒子,看起来像这样:

enter image description here

选择“仅结构”,因为你只是想设置表了。我会给他们与原始表名相同的名称,并将“_Archive”添加到最后。这样,很容易确定您正在使用哪个表。

接下来,确定哪些是您的“父”表,哪些是您的“子”表。您可以通过确定哪些字段包含彼此的关系以及它们如何关联来做到这一点。任何具有一对多关系的表都可以被视为“一方”的“父母”,而“多”方则被视为“孩子”。

之后,您将需要确定如何存档。通常,表格中有一些日期字段可用作指南。比如说,你有一个叫做“订单日期”的字段。您可以选择在2010年1月1日之前存档任何订单日期的任何物品。所以,为此,您需要编写一个Append查询。您将在订单日期< = 2009年12月31日后将所有内容附加到新的归档表中。您首先为子表格执行此操作,然后执行到父表格。

在此之后,您将编写一个删除查询。基本上与上面的过程相同,但是由于数据已经写入到归档表中,所以您正在从原始表中删除。您首先要从子表中删除必须。然后对父表执行相同的操作。

您现在可以将所有存档表移动到新的数据库中,并将其压缩以最小化空间。一旦完成,您可以修复&压缩您的数据库并且尺寸应该小得多。

永远记得先做一个副本!如果你犯了什么错误,你不能撤消它们。创建副本可让您返回并重试,而不会丢失任何数据。

+0

我需要做同样的事情,并通过与你所说的非常类似的想法。非常有用的答案!关于你的第三个到最后一段,他能不能从家长级联删除? – Brian 2017-04-28 20:14:40

相关问题