在没有本机UUID / GUID数据类型的数据库中存储UUID / GUID的最有效数据类型是什么? 2 BIGINTs?

将GUID转换为该类型的最有效代码(C#首选)是什么?

感谢。

有帮助吗?

解决方案

如果不知道您正在使用的数据库,很难说最有效率的是什么。

我的第一个倾向是使用 binary(16)列。

至于在C#中使用该值, System.Guid 类型有一个接受 byte [] 数组的构造函数,以及一个方法 ToByteArray() ,返回一个字节数组。

其他提示

根据我的经验,分为两个整数的UUID仍然比使用char字段更有效。不同的DB虽然以不同的方式作出反应。整理也可以在那里发挥作用。话虽这么说,但通常存在更大的性能“罪恶”。所有的应用程序,我不认为这对许多应用程序来说都是一个主要的方式。你必须根据你的应用程序的这个部分有多繁忙来判断自己?您是否需要UUID可以进行绝对最快的查询? 600ns对400ns对你来说有很大的时间差异吗?

如果db会有很多手动sql doen,那么当你需要进行插入并且没有db默认值时,让一个包含来自不同字段的UUID的密钥有点臭。这也是chars的一个问题。

如果你有一个数据库抽象层,那么组合多个表字段来获取你的UUID应该不是什么大问题。

查看 .NET guid类 ,有几种方法可以初始化一个guid:

Guid(Int32,Int16,Int16,Byte,Byte,Byte,Byte,Byte,Byte,Byte,Byte) GUID(字符串)

虽然从理论上讲,将整数存储在数据库中可能会更有效(你可以使用位移来真正存储4个32位整数......但是在加载和保存每个整数时你必须计算出来。另外,它需要数据库中的4个字段。我想它最终效率会降低。

添加不可能直接在数据库中读取它以进行调试/测试,我会说最好存储一个字符串。它只有一个32个字符的字段(如果包含破折号,则为36个字段),并且转换非常容易。 guid。 ToString()新Guid(stringValue);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top