Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql表中状态的最佳类型是什么?_Sql_Postgresql_Types_Enums_Status - Fatal编程技术网

sql表中状态的最佳类型是什么?

sql表中状态的最佳类型是什么?,sql,postgresql,types,enums,status,Sql,Postgresql,Types,Enums,Status,我需要存储实体的状态,但我一直在思考什么是更好的sql类型。我正在使用postgresql,并看到以下可能性: 瓦尔查尔 枚举 单独参考表 枚举并不坏,即使我将添加新的状态,现在它似乎比引用表更简单和清晰。是这样吗 另一个问题是,在select查询中,什么是性能更好的选项?枚举类似于int,但引用表转向带有连接的查询或where exists查询以按状态筛选 帮助我了解什么更好?如果状态可能位于多个表中,那么我建议使用一个参考表。这可确保状态一致 在单个表中,可以使用带有检查约束的varchar

我需要存储实体的状态,但我一直在思考什么是更好的sql类型。我正在使用postgresql,并看到以下可能性:

  • 瓦尔查尔
  • 枚举
  • 单独参考表
  • 枚举并不坏,即使我将添加新的状态,现在它似乎比引用表更简单和清晰。是这样吗

    另一个问题是,在select查询中,什么是性能更好的选项?枚举类似于int,但引用表转向带有连接的查询或where exists查询以按状态筛选


    帮助我了解什么更好?

    如果状态可能位于多个表中,那么我建议使用一个参考表。这可确保状态一致

    在单个表中,可以使用带有检查约束的
    varchar()
    列。然而,我可能仍然倾向于参考表


    参考表除了一致性之外还有另一个优点。它使存储有关状态的信息变得更容易——例如,短名称、长描述、“某些属性的默认”值等等。

    谢谢。这意味着,如果实体是复杂的,而不是有参考地位。但是性能呢?@Dmytro。小型引用表的联接通常对性能有难以衡量的影响。也就是说,性能影响可以忽略不计——好吧,只有一个例外。通常,用于处理数据的整数键小于用于表示数据的字符串。这可能是一个巨大的性能胜利,因为原始表中的数据页更小。