开发者社区> 问答> 正文

没有主键的表

我有几个表,其唯一的数据是uniqueidentifier(Guid)列。由于guid是非顺序的(并且它们是由客户端生成的,所以我不能使用newsequentialid()),因此我在此ID字段上创建了一个非主要的,非聚集的索引,而不是为表提供了聚集的主要键。

我想知道这种方法对性能的影响。我见过有人建议表应该具有自动递增(“身份”)int作为集群主键,即使它没有任何意义,因为这意味着数据库引擎本身可以使用该值快速查找一行,而不必使用书签。

我的数据库是跨一堆服务器进行合并复制的,所以我避开了Identity int列,因为它们有点麻烦,无法正确进行复制。

你怎么看?表应该有主键吗?或者,如果没有明智的索引来建立索引,可以没有任何聚集索引吗?

展开
收起
心有灵_夕 2019-12-25 20:18:04 1118 0
1 条回答
写回答
取消 提交回答
  • 您需要了解,尽管默认情况下将聚集索引放在表的主键上,但是这两个概念是分开的,应该分开考虑。CIX指示NCIX存储和引用数据的方式,而PK为每一行提供唯一性以满足表的逻辑要求。

    没有CIX的表只是一个堆。没有PK的表通常被认为是“非表”。最好分别了解PK和CIX概念,以便您可以在数据库设计中做出明智的决策。

    2019-12-25 20:18:27
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载