[英]space optimization in a mysql database
我正在建立一個包含大量對的數據庫,每個對由兩部分組成,一個ID和一個長字符串。 每個ID都是唯一的,但是只有少數幾個長字符串屬性。 為了節省空間,我正在考慮執行以下操作:
我有兩個表,第一個表具有ID和stringID形式的對,第二個表具有stringID longString形式的對。
我想知道這種空間優化是否已經在mysql數據庫中自動完成。 如果是這樣,那么我就不會自己實施它。 如果這種空間優化不是自動完成的,那么還有更好的方法嗎? 關於這種類型的優化,最佳實踐是什么? 謝謝
為了使我的問題更具體,請考慮以下原始表:
employee WorkAddress (an extremely long string)
name1 address1
name2 address1
name3 address1
name4 address1
...
name1000 address2
name1001 address2
name1002 address2
...
etc
以及新的更節省空間的表:
employee addressID (much shorter than the long string)
name1 ID1
name2 ID1
...
name1000 ID2
name1001 ID2
name1002 ID2
...
etc
除了第二個表:
addressID WorkAddress
ID1 address1
ID2 address2
...
etc
注意:如果您認為此問題不適合stackoverflow,請針對此類問題推薦其他stackexchange網站之一。 謝謝
使用這兩個表的解決方案當然是正確的。 不是由於任何空間方面的考慮(如果您在(外部)空間確實很短的環境中,完全成熟的DBMS始終不是正確的工具),而是因為通過規范化來確保數據完整性。
如果該字符串值直接在具有ID的表中並且已更改,則意味着該表中具有該值的每一行都必須更改。 對於其中一種寫作,不僅僅是在兩張表中更改一行。 但更糟糕的是,如果您忘記了在任何情況下數據已損壞的情況下都更新一行或幾行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.