Sql server 以最佳速度正确构建数据库

Sql server 以最佳速度正确构建数据库,sql-server,database,Sql Server,Database,我正在设计一个新的数据库模型,我正在讨论如何为表设置主键 如果我给一个表2主键,它肯定有助于数据完整性,以确保没有从任何方向输入重复项。因此,如果我有一个以CompanyID和ContactID作为主键的关联表(我需要company和contact之间的多对多关系),如果我现在想将此表关联到另一个表,其中此contact在某个特定字段中为该公司工作(我有另一个包含所有不同字段类型的表,)我的相关表现在是否有3个主键,分别是CompanyID、ContactID和FieldID 另一个选项是我比较

我正在设计一个新的数据库模型,我正在讨论如何为表设置主键

如果我给一个表2主键,它肯定有助于数据完整性,以确保没有从任何方向输入重复项。因此,如果我有一个以CompanyID和ContactID作为主键的关联表(我需要company和contact之间的多对多关系),如果我现在想将此表关联到另一个表,其中此contact在某个特定字段中为该公司工作(我有另一个包含所有不同字段类型的表,)我的相关表现在是否有3个主键,分别是CompanyID、ContactID和FieldID

另一个选项是我比较习惯的,那就是给我的关联表提供它自己的id字段,该字段将是主键,然后在我的新表中将其作为外键。对于完整性,第二个选项似乎是一个缺点,但我似乎记得在某个地方读到过,为一个字段设置多个主键会减慢查询速度

当速度不仅是选择的重要因素,而且也是插入和更新的重要因素时,最好的方法是什么?
谢谢。

您需要了解更多信息并缩小回答者的选择范围。这些信息将有助于我们了解表格未来的增长情况、插入、选择和删除的速率……除非您设计的表格包含数十亿行,否则我可以说您的工程设计过度。如果我理解您的意思,我建议您在所有CompanyID中只需要一个表格,收缩,FieldID@TheGameiswar,Company表有大约60万条记录,并且增长很快(有新的插入)。Contact表是这一数字的两倍,而相关表(字段信息)的增长不会太大,因为我们不太使用这些信息。但是信息必须是准确的,我们要确保复制被停止。我们正试图清理一个非常混乱的数据库,在联系人表上运行查询需要一分钟!!!我建议你用所有的细节重新构造这个问题,例如,请看这里……一个表只能有一个主键。您建议的是复合键还是唯一键?您需要了解更多信息并缩小回答者的选项范围。这些信息将帮助我们了解表未来的增长情况、插入、选择和删除的速率……除非您设计的表包含数十亿行,我可以说你太过分了。如果我理解你的意思,我建议一家公司只需要一张桌子,FieldID@TheGameiswar,Company表有大约60万条记录,并且增长很快(有新的插入)。Contact表是这一数字的两倍,并且相关表的增长不会太大(字段信息)因为我们很少使用这些信息。但是信息必须是准确的,我们要确保复制被停止。我们正试图清理一个非常混乱的数据库,在联系人表上运行查询需要一分钟!!!我建议你用所有的细节重新构造这个问题,例如,请看这里……一个表只能有一个主键。您建议使用复合键还是唯一键?