针对nvarchar的Guid字段的优势包含Guid?

Roy*_*mir 3 c# sql-server uniqueidentifier

我想知道什么是UniqueIdentifier columnDb中的一个Adnantages

nvarchar(32)列上,其中包含Guid 字符串 being sent from c#.

Jon*_*eet 14

从服务器的角度来看:

  • 我期望一个Guid字段能够更有效地存储 - 它只需要8个字节,而不是32个字节,或者可能是64个字节,具体取决于nvarchar的存储方式
  • 可以被服务器视为不透明的二进制数据 - 例如,在进行比较时不需要智能.没有文化或案例敏感性.它基本上不是文本数据,因此没有与文本相关的所有问题和复杂性.
  • 服务器可以决定使用Guid的已知结构来更有效地进行索引.例如,如果某些位比其他位更可能是随机分布的,那么这些位可用于索引.

从程序员的角度来看:

  • 它更清楚地说明了预期的数据.
  • 您不需要任何验证,并且您永远不会对无效数据有任何顾虑 - 它们只是GUID.

我非常喜欢以最接近数据逻辑含义的任何形式保存数据.例如,如果你要存储日期和时间数据,如果你有一个日期/时间值而不是一个字符串,它会使比较等生活更加简单.只能在必要时执行与字符串(或任何其他表示,但通常是字符串)的转换.

  • @Hawkeye:是的,我的意思是 16 个字节。但不,我根本无法测试这个。我已经很多年没有使用 SQL Server 了。如果您仍然对此感兴趣,我认为您比我更适合测试它。 (2认同)