在我的Postgres数据库中,我有一个包含字符序列的列.这些序列中的字符是氨基酸.只有20个氨基酸加上一些特殊用途所需的额外字符.

目前,这些数据是以‘Character Variable’类型存储的.我假设这是低效的,因 for each 字符使用一个字节,而理论上我的字母表可以用5位(2**5=32)表示.我所说的低效是指它占用的内存多于所需的内存,如果需要判断的位数较少,则比较方法(如判断一个字符串是否等于另一个字符串或包含另一个字符串)将需要更多的操作.

这样对吗?有没有更有效的方法来存储这些数据,以最小化数据库的大小并提高字符串操作的效率?

推荐答案

Don't do that.在存储方面的节省微乎其微,而缺点却是巨大的:

  • 氨基酸IUPAC编码/解码的开发和维护成本较高.
  • 您无法使用强大的正则表达式搜索序列:例如,SELECT * FROM proteins WHERE sequence ~ '^Y.{2,3}[RK]L'

Postgresql相关问答推荐

如何在Windows中安装sql for golang

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

如何在生成的列的表达式中使用TIMESTAMP WITH时区列?

对 VOLATILE 函数的调用会 destruct SELECT 语句的原子性

使用Helm设置PostgreSQL配置

如何在 MockDataProvider 中创建自定义 JOOQ 记录?

在 SQL 上返回负值

使用 pgx.CopyFrom 将 csv 数据批量插入到 postgres 数据库中

使用间隔参数的 go postgres 准备好的语句不起作用

Postgres/psycopg2 - 插入字符串数组

如何将 postgres 数据库转换为 sqlite

无法安装 psycopg2 Ubuntu

在同一分区上应用多个窗口函数

如何在 postgres 模式中列出关系

判断materialized视图的上次刷新时间

PostgreSQL 使用 UUID 与文本作为主键

如何从我的 postgresql 查询中获取最小值、中值和最大值?

postgresql DB中唯一键的正确数据类型是什么?

基于秒的 Postgresql 日期差异

postgresql 删除级联