gpt4 book ai didi

数据库优化 - 编码字段

转载 作者:搜寻专家 更新时间:2023-10-30 23:48:01 26 4
gpt4 key购买 nike

一些理论问题。

只是想知道是否有优化数据字段的方法?

假设对于给定的字段,您只有 3 个可能的字符串,但由于某种原因它们很长(比如 50 个字符),将该字段声明为 character_varying(50) 似乎浪费了大量磁盘空间,因为数据基本上可以容纳2 位。

我想您可以通过 JOINing 标签表来解决问题,但是还有其他更合适的方法吗?或者数据库是否能够自行自动优化这种列?

普通数据库是否能够处理自己的这种优化?有没有办法在数据库中声明这种结构(类似于 R 语言因子概念)?Postgresql 域结构对优化有帮助吗?

一些背景:

在您认为这是一个愚蠢的问题之前。我一直在使用旧的遗留系统(90 年代初),其中所有内容都经过大量编码以节省内存和性能(例如,性别将被编码为 (1,2) 而不是 (male,female) 和许多不太明显的编码)。

现在我们正在将系统迁移到更现代的数据库 (postgresql),希望我们能够使用可读的“纯文本”字段。

我并不真正关心实际性能。更多的是一个理论问题。

最佳答案

我认为您正在寻找必须专门创建的“枚举”数据类型,它将数据保存为整数,但在 SELECT 时将其转换为字符串

例如

CREATE TYPE my_specific_text_field AS ENUM
(
'string one with longish text',
'second string with fairly long text',
'third string'
);

CREATE TABLE test (
id serial not null primary key,
myenum my_specific_text_field
);

INSERT INTO test (myenum) VALUES ('string one with longish text');

也就是说,如果您不熟悉枚举,枚举可能会有点麻烦,导出枚举可能会很棘手,而且我相信它们的长度上限为 63 字节。

关于数据库优化 - 编码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25640884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com