C# Guid字段相对于nvarchar包含Guid的优势?

C# Guid字段相对于nvarchar包含Guid的优势?,c#,sql-server,uniqueidentifier,C#,Sql Server,Uniqueidentifier,我想知道在Db中,UniqueIdentifier列的Adnantages是什么 Overnvarchar(32)列,该列包含一个Guid字符串,从服务器的角度来看,该字符串是从c#发送的: 我希望Guid字段的存储效率更高-它只需要8个字节,而不是32个字节,或者可能64个字节,具体取决于nvarchar的存储方式 服务器可以将其视为不透明的二进制数据—例如,在进行比较时不需要任何智能。没有文化或案例敏感性。它基本上不是文本数据,因此没有与文本相关的所有问题和复杂性 服务器可以决定使用已知的

我想知道在Db中,
UniqueIdentifier列的Adnantages是什么


Overnvarchar(32)列,该列包含一个Guid字符串
,从服务器的角度来看,该字符串是从c#

发送的:

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

  • 它对预期数据做出了更清晰的说明
  • 您不需要任何验证,也永远不会担心无效数据——它们只是GUI

我非常喜欢以最接近数据逻辑意义的任何形式保存数据。例如,如果您要存储日期和时间数据,那么如果您有一个日期/时间值而不是字符串,那么比较的过程就会简单得多。与字符串(或任何其他表示形式,但通常是字符串)之间的转换只应在必要时执行。

@marc_s,我想要nvarchar,因为我想:“我不需要所有这32个字符,我认为8个guid字符就足以成为唯一的…”-因此我从32个字符的guid中剪切了8个字符,但它可能不会是唯一的…guid(uniqueidentifier)不会存储为文本;你只是看到在你的工具中(日期不是文本),你真的需要Michelle Ufford的reed-她清楚地解释了为什么为你的数据列选择正确(最合适)的数据类型是最重要的。每个GUID的单字节由两个十六进制字符(0-9,a-F)表示;一个字节的范围从0到255-这些值以字符串形式表示为
00
FF
-->表示单个(二进制)值需要两个字符byte@marc_s一如既往,感谢您的帮助和关注。