1

UNIQUE对两列使用约束与仅使用一列包含两列值/GUID 的串联并在其上使用索引之间是否存在任何重大开销差异?例如,与其使用(两个不同的列)作为唯一约束,不如添加一个包含或随机 GUID|John|Smith|的额外列更有效?JohnSmith

4

3 回答 3

1

我会添加这两个列并对它们定义一个唯一约束,因为它们似乎具有业务相关性并且 GUID 似乎不合适。此外,不将它们组合起来的动机是避免SUBSTRING以后进行任何操作以单独处理它们。

于 2012-10-07T03:56:43.600 回答
1

索引本身不会有太大的区别,但是将额外的字段添加到表中会使每条记录变大,从而由于额外的 I/O 而使对表的任何操作变慢。

于 2012-10-07T09:40:42.647 回答
0

连接两列用作键似乎很愚蠢——当您声明复合键时,数据库完全有能力为您做这件事。向表中添加额外的 INT 或 GUID 键是否有意义取决于这两列是否真的表的主键。如果是的话,为什么还要携带额外列的额外开销(您仍然需要前两列的索引以确保它们保持唯一性)。但是,如果它们不是真正的主键(如在您的示例中,名字和姓氏在几乎任何现实世界系统中都不能被视为主键),那么您将需要一个单独的主键。

于 2012-10-07T10:44:22.687 回答