2014-10-02 60 views
1

我不知道描述我的問題的最佳方式,我只是尋找正確的方向,或從哪裏開始。 我會非常高興與一個非常有用的鏈接或僞代碼的答案。將字符串變量轉換爲數字代表並將字符串存儲在其他位置?

我的問題,我有一個數據庫即將打到MS Access硬編碼2 GB數據庫的限制,我不想拆分數據庫。

我認爲是一種可能的解決方案 - 使數據庫在數據存儲中更高效。我想,但不知道這是否屬實,我可以通過將一些字符串字段轉換爲數字字段來實現。留在我身邊......

例如:

  • 我的數據庫有幾百萬條記錄的字段,我們會打電話給TooLongString
  • 每個值大約爲50個字符
  • 每條記錄​​的值對於本場
  • 這裏只有9 TooLongString可能值
  • 難道我減少數據庫的大小,而不是存儲一個數字, 代表9個POSS之一ible值並將文本值存儲在一個小表中? (所以從50個字符到1個字符數百萬次)

我解釋了我的問題是否正確?我的潛在解決方案是否真的是一個解我會如何去做這件事?

謝謝!

+0

你做了一個緊湊型修理。我假設你的代碼+表單等是從表中分離出來的?接下來確保爲大多數列啓用「壓縮」。因此,在設計模式下打開表格並確保對大多數列打開壓縮(至少任何一列多於5字符長)。 – 2014-10-02 20:17:13

回答

2

簡短的回答是肯定的,這會減少數據庫的大小。正如你所建議的,你可以在第二個表中保存「TooLongString」的九個可能的值,並將適當答案的ID存儲在主表中。然後,您需要在拉出數據時加入這些表,以便檢索實際文本而不是ID。

我會先設置你的新表,然後爲你的現有ID添加一個新的列。由於只有9個可能的值,所以我試圖手動運行UPDATE查詢九次,例如如果新表中的第一個字符串是ID爲1的「MyFirstString」,那麼可以運行「UPDATE existingTableName SET newColumn = 1 WHERE oldColumn ='MyFirstString'」。對9個值中的每一個值執行此操作,然後可以從表格中刪除舊字符串列。

+0

感謝丹,我將如何去實際轉換主表中的這些值? – ChrisG 2014-10-02 13:42:26

+0

我會先設置你的新表,然後爲你的現有ID添加一個新的列。由於只有9個可能的值,所以我試圖手動運行UPDATE查詢九次,例如如果新表中的第一個字符串是ID爲1的「MyFirstString」,那麼可以運行「UPDATE existingTableName SET newColumn = 1 WHERE oldColumn ='MyFirstString'」。對9個值中的每一個值執行此操作,然後可以從表格中刪除舊字符串列。 – danmullen 2014-10-02 13:47:13