mysql数据库中的空间优化

时间:2019-04-18 20:23:03

标签: 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网站之一。谢谢

1 个答案:

答案 0 :(得分:1)

使用两个表的解决方案当然是正确的。不是由于任何空间考虑(如果您在(外部)空间确实很短的环境中,完全成熟的DBMS始终不是正确的工具),而是因为通过规范化来确保数据完整性。

如果该字符串值直接在具有ID的表中并且已更改,则意味着该表中具有该值的每一行都必须更改。对于其中一种写作,不仅仅是在两张表中更改一行。但更糟糕的是,如果您忘记了数据损坏的任何情况下都更新一行或某些行。