枚举与 String/Integer 枚举

Enum vs String/Integer Enum

我注意到像 Postgres 这样的一些数据库添加了 Enum 但问题是,

什么时候 integer/string based enum 会成为性能问题?

关注这个关于差异的答案Postgresql enum what are the advantages and disadvantages?

因为当您使用 Rails 或在这种情况下使用 Elixir 语言的 Ecto 时,存在一定程度的抽象,因此列出的两个优点之一完全没有问题,所以只缺少 performance 个问题。

所以当这个优势真的很重要时,你放弃了那里列出的缺点

PostgreSQL 中的枚举

  1. PostgreSQL 支持创建数据类型。

  2. 具有有序设置值的静态数据(可由 PostgreSQL 排序)

  3. 区分大小写 'happy' 与 'HAPPY'
  4. 不同
  5. 如果不是在数据类型中创建,则无法输入其他值。

对于性能问题:PostgreSQL 从来没有由数据类型引起的性能问题。其中大部分是由索引、配置和糟糕的数据库设计引起的。

对于枚举:在PostgreSQL中它们相当于许多编程语言支持的枚举类型。枚举类型的一个示例可能是星期几,或者一组数据的状态值。

从内部枚举值到文本标签的翻译保存在系统目录中 pg_enum。直接查询这个目录会有用。

注意:本机或基于 String/Integer 的类型枚举都不会导致性能问题。