gpt4 book ai didi

sql - uniqueidentifier 跨数据库唯一吗?

转载 作者:行者123 更新时间:2023-12-02 04:23:56 25 4
gpt4 key购买 nike

我有多个数据库,每个数据库都有一个审计表。其中一个数据库是一个“通用”数据库,其中包含国家、州等表格。

这个公共(public)数据库的表在其他数据库中作为 View 被引用。

目前我的审计表有一个标识列。为了列出审计记录,我使用 UNION 将普通数据库中的审计表和普通数据库中的审计表合并。

但是审计表中的标识列可能是相同的。

如果我在审计表中添加一个 uniqueidentifier 列并将其用作我的唯一 ID,该列在数据库中是否是唯一的?

最佳答案

如果您使用uniqueidentifier 生成的内置方法(如newId() 或C# 的Guid.NewGuid()),是的,它将在数据库、服务器、国家等方面都是独一无二的。

事实上,这是 GUID 的一大用途 - 复制。如果您在两个数据库中有相同的 GUID,则可以保证它是故意放在那里的。

但是,请注意 GUID 确实有其缺点 - 它们可能会使您的索引性能更差(或至少需要更多维护),并且它们通常更大。

此外,GUID 并非完全随机 - 有几种不同的 GUID 生成算法,其中一些算法本身是唯一的(例如,使用 MAC 地址作为 GUID 的一部分 - 默认情况下 MAC 是唯一的,尽管您可以手动覆盖它们)-因此每个物理服务器的一部分是唯一的,并且机器确保它不会对两个 GUID 使用相同的时间戳。还有顺序 GUID (newSequentialId()),这有助于避免索引碎片(当然对聚集索引非常有用)——请注意,它们取决于计算机的 MAC 地址,它们是可预测的,所以如果你公开 GUID,并且你依赖它们是“ secret 的”,你可能不想使用它们。一些 GUID 算法比其他算法更可预测。

关于sql - uniqueidentifier 跨数据库唯一吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com