枚举类型 vs 字符串/整数枚举

9
我注意到一些数据库,如Postgres,添加了Enum,但问题是,
何时基于整数/字符串的枚举成为性能问题?
根据这个关于差异的回答Postgresql enum what are the advantages and disadvantages? 因为当您使用Rails或在这种情况下来自Elixir语言的Ecto时,存在一定级别的抽象,因此列出的两个优点之一完全不成问题,因此只有缺少性能方面的问题。
因此,当那个优点真正重要时,您会放弃列出的缺点。
1个回答

9

PostgreSQL中的枚举类型

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

  2. 静态数据,具有有序的一组值(可以通过PostgreSQL进行排序)。

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

性能问题:由于索引、配置和糟糕的数据库设计,PostgreSQL从未因数据类型而导致性能问题。

对于枚举类型:在PostgreSQL中,它们等效于许多编程语言中支持的枚举类型。例如,一周的几天或数据的一组状态值。

从内部枚举值到文本标签的转换保存在系统目录 pg_enum中。直接查询此目录可能很有用。

注意:无论是基于本机的还是基于字符串/整数的枚举类型都不会导致性能问题。


1
整数/字符串枚举何时成为性能问题?大多数要点可以通过某些ORM解决。 - Yordis Prieto Lazo
@YordisPrietoLazo为什么你认为这会成为一个性能问题? - zerkms
抱歉,但您没有理解这句话的重点:“在什么时候会成为性能问题”。 - Yordis Prieto Lazo
我更注重于基于字符串/整数的视角。这意味着,如果我能够熟练使用基于字符串的枚举类型而不是使用本机枚举类型,那么我会更加专注于它。 - Yordis Prieto Lazo
1
@YordisPrietoLazo 我建议你在PotgreSQL中使用字符串/整数,你可以在pg_enum中更详细地检查对象。无论哪种方式,它们都是相同的,不会导致性能问题。 - Adrian Hartanto
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接