【问题标题】:Unique identifier and long int comparison as primary key唯一标识符和长整数比较作为主键
【发布时间】:2012-11-20 04:44:51
【问题描述】:

我已经多次看到唯一标识符和long int这两种数据类型作为数据表的主键。哪一个更好?请分享您的意见。两者各有优劣。

【问题讨论】:

    标签: sql sql-server primary-key sqldatatypes


    【解决方案1】:
    if you don't have a specific reason to use GUIDs, use INTs.
    

    GUID 的优势:

    • 唯一标识符更好,因为guaranteed to always return a unique value across space and time

    • 我不知道创建 GUID 的完整机制,但我似乎知道 请记住,它与您的 MAC 地址有关 网卡和系统时间。

    • 如果您是 consolidating records from multiple SQL Servers into one table,这会派上用场,例如在数据仓库情况下。

      SQL Server 复制也大量使用 GUID 来跟踪分布在多个 SQL Server 中的行。

      DISADVANTAGEOUS OF GUID:

    • 没有办法确定唯一标识符的顺序 产生了值。它们不适合现有的应用程序 依赖于连续增加键值

    • 使用 GUID 作为键值的主要缺点是它们是 大的。基于 GUID 构建的索引将比 建立在 IDENTITY 列上的索引

    • GUID 作为集群键存在问题,因为高 随机性


    【讨论】:

    • Guid 作为 PK 存在两个主要问题。它们的大小,你无能为力,它们的随机性会导致索引碎片和页面拆分;您可以通过使用 newsequentialid() 而不是 newid() 来获得有序的 id 序列来避免后一个问题。如果您需要在中间层或客户端生成 Guid,请查看“Comb”的概念。这旨在解决与 newsequentialid() 相同的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多