有点理论上的问题。数据库优化 - 编码字段
只是想知道有没有一种方法来优化数据字段?
说一个给定的字段,你只有3个可能的字符串,但这些字符串由于某种原因很长(比如说50个字符),声明字段为character_varying(50)看起来像浪费了很多磁盘空间,因为数据本质上会适合在2位上。
我想你可以通过加入标签表来解决问题,但有没有另一种更正确的方法或数据库能够自动优化这种类型的列?
常见的数据库能够处理自己的那种优化吗? 有没有办法在数据库中声明这种结构(类似于R语言因子概念)? Postgresql域结构是否有助于优化?
某些背景:
在你认为这是一个愚蠢的问题之前。我一直在使用旧的遗留系统(90年代早期),其中一切都进行了大量编码以节省内存和性能(例如,性将被编码(1,2)而不是(男性,女性)以及许多不太明显的编码)。
现在我们正在将系统移动到更现代化的数据库(postgresql),希望我们能够使用可读的“纯文本”字段。
我并不是真的担心实际的表现。更多的是一个理论问题。
作为一个理论问题,这实际上是关于列约束。可以使用普通的CHECK约束或用户定义的类型或DOMAIN。你也可以将这些域分割成单独的表格(甚至可以使用类似EAV的模型) – wildplasser 2014-09-03 10:09:41