枚举与 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 中的枚举
PostgreSQL 支持创建数据类型。
具有有序设置值的静态数据(可由 PostgreSQL 排序)
- 区分大小写 'happy' 与 'HAPPY'
不同
- 如果不是在数据类型中创建,则无法输入其他值。
对于性能问题:PostgreSQL 从来没有由数据类型引起的性能问题。其中大部分是由索引、配置和糟糕的数据库设计引起的。
对于枚举:在PostgreSQL中它们相当于许多编程语言支持的枚举类型。枚举类型的一个示例可能是星期几,或者一组数据的状态值。
从内部枚举值到文本标签的翻译保存在系统目录中 pg_enum
。直接查询这个目录会有用。
注意:本机或基于 String/Integer 的类型枚举都不会导致性能问题。
我注意到像 Postgres 这样的一些数据库添加了 Enum
但问题是,
什么时候 integer/string based enum
会成为性能问题?
关注这个关于差异的答案Postgresql enum what are the advantages and disadvantages?
因为当您使用 Rails 或在这种情况下使用 Elixir 语言的 Ecto
时,存在一定程度的抽象,因此列出的两个优点之一完全没有问题,所以只缺少 performance
个问题。
所以当这个优势真的很重要时,你放弃了那里列出的缺点
PostgreSQL 中的枚举
PostgreSQL 支持创建数据类型。
具有有序设置值的静态数据(可由 PostgreSQL 排序)
- 区分大小写 'happy' 与 'HAPPY' 不同
- 如果不是在数据类型中创建,则无法输入其他值。
对于性能问题:PostgreSQL 从来没有由数据类型引起的性能问题。其中大部分是由索引、配置和糟糕的数据库设计引起的。
对于枚举:在PostgreSQL中它们相当于许多编程语言支持的枚举类型。枚举类型的一个示例可能是星期几,或者一组数据的状态值。
从内部枚举值到文本标签的翻译保存在系统目录中 pg_enum
。直接查询这个目录会有用。
注意:本机或基于 String/Integer 的类型枚举都不会导致性能问题。