假设我有一个包含多个列的数据库。在每一列中都有许多通常相似的值。
例如,我可以有一个名为"描述"的列。值可以是"这是测量的描述"。此列中的此描述最多可达1000000次。
我的问题不是如何优化此数据库的设计,而是数据库如何处理此类冗余值。这些冗余值是否与完美设计(相对于数据库的总大小)一样有效存储?如果是,那么值是如何压缩的?
答案 0 :(得分:2)
唯一正确的答案是:取决于数据库和配置。因为这个没有银弹。有些数据库只存储每列的值一次(某些列存储或类似),但从技术上讲,没有必要这样做。
在某些数据库中,您可以让DBMS提出优化建议,在这种情况下,它可能会提出一个仅包含现有值的ENUM字段,这会将字符串减少为引用字符串的id。这个"优化"是有代价的,例如,当你想在字段描述中添加新值时,你必须调整ENUM字段。
根据实际使用情况,这些优化不值得,或甚至是显示停止,例如当数据经常更改(插入或更新)时。与实际处理查询相比,dbms将花费更多时间来管理唯一性/重复项。
关于压缩的问题:还取决于配置和我猜的数据库系统,也取决于字段类型。文本数据可以被压缩,并且在非索引文本字段的情况下,使用简单压缩算法几乎没有缺点。我怀疑,哪种算法取决于dbms和配置。
除非你变得更具体,否则没有更具体的答案,我相信。