【发布时间】:2012-10-01 05:13:45
【问题描述】:
我已经开始从事一个项目,其中有一个相当大的表(大约 82,000,000 行),我认为它非常臃肿。其中一个字段定义为:
consistency character varying NOT NULL DEFAULT 'Y'::character varying
它用作布尔值,值应始终为 ('Y'|'N')。
注意:没有检查约束等。
我正在尝试找出理由来证明更改此字段的合理性。这是我所拥有的:
- 它被用作布尔值,所以就这样吧。显式优于隐式。
- 它将防止编码错误,因为现在任何可以转换为文本的东西都会盲目地进入那里。
这是我的问题。
- 大小/存储怎么样?数据库是 UTF-8。所以,我认为在这方面确实没有多少节省。
boolean应该是 1 个字节,但 UTF-8 中'Y'应该是 1 个字节(至少当我在 Python 中检查长度时我得到的结果)。这里是否还有其他可以节省的存储开销? - 查询性能? Postgres 是否会因“
=TRUE”与“='Y'”的原因而获得任何性能提升?
【问题讨论】:
标签: postgresql database-design query-optimization storage postgresql-9.1