2015-02-05 50 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

相關問題