【问题标题】:Enum vs String/Integer Enum枚举与字符串/整数枚举
【发布时间】:2017-07-05 04:55:18
【问题描述】:

我注意到 Postgres 等一些数据库添加了 Enum 但问题是,

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

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

因为当您使用 Rails 或在本例中来自 Elixir 语言的 Ecto 时,存在一定程度的抽象,因此列出的两个优点之一根本没有问题,因此只缺少 performance 问题。

所以当这个优势真的很重要时,你应该放弃那里列出的劣势

【问题讨论】:

    标签: database postgresql enums database-performance


    【解决方案1】:

    PostgreSQL 中的枚举

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

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

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

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

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

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

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

    【讨论】:

    • 在什么时候基于整数/字符串的枚举会成为性能问题?大多数要点都可以通过一些 ORM 来解决
    • @YordisPrietoLazo 为什么你认为它会成为性能问题?
    • @YordisPrietoLazo 枚举性能更好 - 参考:stackoverflow.com/questions/2318123/…
    • 对不起,你错过了句子点:At what point becomes a performance issue
    • @YordisPrietoLazo 我建议您使用基于 PotgreSQL 的字符串/整数,您可以在 pg_enum 中检查对象的更多详细信息。无论如何,它们都是相同的,永远不会导致性能问题
    猜你喜欢
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多