Enum vs String / Integer Enum

时间:2017-07-05 04:55:18

标签: database postgresql enums database-performance

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

integer/string based enum何时成为性能问题?

以下有关差异的答案Postgresql enum what are the advantages and disadvantages?

因为当你使用Rails或者在这种情况下来自Elixir语言的Ecto时,有一个抽象级别,所以那里列出的两个优点中的一个完全没有问题所以只有{{1}关心。

因此,当这种优势非常重要时,你就放弃了那里列出的缺点

1 个答案:

答案 0 :(得分:2)

PostgreSQL中的枚举

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

  2. 具有有序设定值的静态数据(可以通过PostgreSQL排序)

  3. 区分大小写'happy'与'HAPPY'不一样
  4. 如果未在数据类型中创建,则无法输入其他值。
  5. 对于性能问题:PostgreSQL从不会因数据类型而导致性能问题。其中大部分是由索引,配置和错误的数据库设计引起的。

    对于Enum:在PostgreSQL中它们等同于许多编程语言支持的枚举类型。枚举类型的示例可以是一周中的几天,也可以是一段数据的一组状态值。

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

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