【问题标题】:Which PK type to use Int or BigInt or UniqueIdentifier使用 Int 或 BigInt 或 UniqueIdentifier 的 PK 类型
【发布时间】:2017-11-28 09:31:00
【问题描述】:

我们的团队正在开发用于医疗保健 ERP 的新数据库。在头脑风暴会议期间,我建议使用uniqueidentifier,因为它有很多好处,例如

  • 如果我们从客户端应用程序生成值,则可以减少到数据库 OnInsert 的往返次数
  • 通过在客户端应用程序上生成它,我们可以更轻松地使用主从方法。
  • 有助于数据复制

直到现在,我都很自信,甚至我以为我会听到一些赞美,直到我的老板问了我几个问题:

  • 您打算将此Guid 用作聚簇索引的主键吗? .
  • 您知道您的表有多大以及它对性能的影响吗?
  • 一些开发者提出了Int 和其他的BigInt

我想知道我的 Boss 问题是否有根据,或者我的想法是否正确,因为我认为最适合构建具有复制支持的 ERP。

注意我已经在这个网站和其他网站上搜索了很长时间。

以上哪个键最适合用于医疗保健信息系统等 ERP?

【问题讨论】:

标签: sql-server


【解决方案1】:

想想您的公司打算做什么以及您的团队目前拥有的专业水平。显然,根据您的问题和经理的问题,它对 sql server 没有丰富的经验。如果没有必要的专业知识,我无法合理地为您开发企业级系统 - 尤其是您计划使用的后端系统。

而且你的过程(正如你所描述的那样)听起来令人担忧。 IMO,“头脑风暴”不是你决定模式和选择键的地方。并且不应该只是盲目地为每个主键选择特定的数据类型。但所有这一切都是猜测,而不知道你在这个过程中所处的位置。如果您的模式尚未固定(无论为每列选择什么数据类型),那么您还不能担心性能。

最后,您和您的经理混淆了两个相关但独立的属性。尽管 MS 开发团队做出了不幸的实现选择,但主键与聚集索引不同。它们相互独立;对您的聚集索引做出有意识的决定,并且不要让数据库引擎自动选择主键作为聚集索引。

所以回答你的问题。是的 - 这些问题是有效的。但是您的项目似乎还没有达到可以解决这些问题的地步。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多