database - 我应该更好地使用 VARCHAR(3) 或 BIGINT() 作为 PostgreSQL 的主键吗?
问题描述
我正在播种一个大主表并从某些列生成较小的表。这些较小的表通过外键链接到大表。
小表的每个条目都有 2~3 个字符的唯一代码,因此使用 bigintid
存储它们对我来说似乎是多余的。另外,我不需要自动增量。
在这种情况下,我应该将 varchar(3) 类型的代码设置为主键吗?还是 bigint 总是更适合表演?
解决方案
在这种情况下,性能并不重要,而且几字节的存储或多或少也不会。
您应该选择最实用的主键。如果有一个自然的三字符唯一标识符,并且您确定该标识符对于现有的表行永远不会改变,那么varchar(3)
用作表的主键没有问题。
请注意,有些人认为您应该始终使用数字人工主键。这些人恐怕会不同意,我也不愿意在这里发动圣战。对于这种立场,我听到的唯一令人信服的论点是,除了数字主键之外,还有一些 ORM 和其他抽象层不能使用任何东西。但是,如果您没有被这样的工具所困扰,则不必担心。
推荐阅读
- reactjs - 将 Route 中的多个参数与 WordPress 中的 React Router Dom 匹配
- laravel - 如何在 Laravel 中使用主管处理作业?
- r - 根据条件使用其他列的值创建列
- javascript - 如何使用数组方法 foreach() 或 map() 将数独板打印到控制台上?
- javascript - 无法使用 javascript 中的 fetch() API 从我的本地目录中获取文件
- html - 我的代码中有什么东西阻止
- python - 高阶函数 - 接收 lambda func 以进行导数计算
- c# - 需要帮助,我正在尝试压缩图像
- javascript - 如何在js中获取多个照片名称?
- android - 使用问题的完整操作在使用 android 中的模块化创建的 builf 风味应用程序中反复询问