【发布时间】:2011-06-05 23:57:13
【问题描述】:
我需要为需要对等复制的系统创建主键方案。因此,我计划以某种方式将唯一的系统 ID 和序列号结合起来,以得出唯一的 ID。我想确保我永远不会用完 ID,所以我正在考虑使用 varchar 字段,因为如果我开始用完,我总是可以添加另一个字符。但我读过整数对此进行了更好的优化。所以我有一些问题......
1) 整数真的优化得更好吗?如果是,varchars 和整数之间的性能差异有多大?我现在要使用firebird。不过我以后可能会换。或者可能支持多个数据库。所以我正在寻找概括,如果可能的话。
2) 如果整数的优化明显更好,那是为什么呢? varchars 是否有可能在未来赶上,所以最终无论如何都无所谓了?
我的 varchar 键没有任何意义,除了唯一的系统 ID 部分。但我可能想以某种方式掩盖这一点。另外,我计划有效地使用每个字符的所有位。例如,我不打算将整数 123 编码为字符串“123”。所以我不认为 varchars 需要比整数更多的空间。
【问题讨论】:
-
您希望存储多少行?
-
大多数系统都很小,每年可能生成不到 50,000 行。但我可能会添加需要存储更多的功能。此外,一些系统将整合来自许多不同系统的数据。它可能来自数千个系统。因此,与其试图找出最大的行数,我认为我最好只计划一个非常大的数字。除非性能影响太大。那我再考虑。
标签: sql primary-key