【发布时间】:2014-10-27 18:01:56
【问题描述】:
有点理论题。
只是想知道有没有办法优化数据字段?
说对于给定的字段,您只有 3 个可能的字符串,但出于某种原因,这些字符串非常长(比如 50 个字符),声明该字段为 character_varying(50) 似乎浪费了很多磁盘空间,因为数据基本上适合2 位。
我想你可以通过加入标签表来解决这个问题,但是还有其他更合适的方法还是数据库能够自己自动优化这种列?
普通数据库是否能够自行处理这种优化? 有没有办法在数据库中声明这种结构(类似于 R 语言因子概念)? Postgresql 域结构是否有助于优化?
一些背景:
在您认为这是一个愚蠢的问题之前。我一直在使用旧的遗留系统(90 年代初),其中所有内容都经过大量编码以节省内存和性能(例如,性将被编码为 (1,2) 而不是(男性、女性)和许多不太明显的编码)。
现在我们正在将系统迁移到更现代的数据库 (postgresql),希望我们能够使用可读的“纯文本”字段。
我并不真正关心实际性能。更多的理论问题。
【问题讨论】:
-
作为一个理论问题,这实际上是关于列约束的。普通的
CHECK约束,或者用户定义的类型或者DOMAIN都可以使用。您还可以将域拆分为单独的表(甚至使用类似 EAV 的模型)
标签: database postgresql database-design relational-database