确定哪个列应该具有主键,以便它具有聚簇索引?

时间:2010-09-16 14:48:55

标签: sql

我是sql的新手。我有一个小问题。我有两张表如下。

表-A

列密钥

87634799
98746323

Column-AwpUnitCost

2.3

4.0

表-B

塔型
丢失

无效

列的目标

http://www.destination1.com

http://www.destination2.com

表-A可能有一千条记录。 AwpUnitCost可能是正面的,负面的或空的。

这些表格没有任何关系。如果表-A有记录,则他们开发报告,报告类型和报告链接在表B中。 表B已修复了两条记录,如上所示。只是想知道我怎么能决定哪个列应该有主键所以它会有聚簇索引?我是否必须在表-A中添加一个像KeyId一样的列?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

聚集索引是物理索引。如果字段上有聚类索引,则在文件内部,数据按该字段的升序存储。决定你需要什么,然后决定哪个是聚集索引。我记得很清楚,主键始终是聚簇索引(如果我错了,请纠正我),但是,与聚簇索引不同,主键要求所有行都有一个不同的主键 - 它应该是唯一的。因此,如果您需要主键(用于外键定义,用于事务日志级复制),则选择一组唯一的字段,您希望以升序顺序存储这些字段(对于性能 - 请考虑插入和选择)。

在表A中,如果密钥是唯一的,它将是主键的一个很好的候选者,但如果它是随机的,它可能会减慢插入速度。

由于这些原因(不要让我太头疼),我使用身份(自动增量整数字段)作为主键。然后,在需要的地方,我添加唯一键,索引等。如果您的表是相关的,请将外键添加到该标识字段。