加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 为什么Guid.ToString()会颠倒字节顺序?

发布时间:2020-12-12 06:34:38 所属栏目:MsSql教程 来源:网络整理
导读:我们将一些Guid存储在MS SQL数据库中.有一些遗留代码执行Guid.ToString(),然后将它们传递给varchar(64),并且有一些较新的代码使用唯一标识符参数传递它们.当您使用MS SQL Management studio查看结果时,它们看起来不同.前三个块的字节顺序相反,但最后一个块保
我们将一些Guid存储在MS SQL数据库中.有一些遗留代码执行Guid.ToString(),然后将它们传递给varchar(64),并且有一些较新的代码使用唯一标识符参数传递它们.当您使用MS SQL Management studio查看结果时,它们看起来不同.前三个块的字节顺序相反,但最后一个块保持不变.为什么?

解决方法

Sql server中的Uniqueidentifier字段可以被索引,因此是“向后”的.

可以从机器特定信息和“事件时间”信息生成Guids.

.Net中的默认Guid是随机的,但您可以通过外部调用从中获取顺序Guid:

[DllImport( "rpcrt4.dll",SetLastError = true )]
static extern int UuidCreateSequential( out Guid guid );

这将根据您的MAC地址(MSDN docs)顺序获取Guids.

如果你.ToString()这些顺序guid然后你将看到字符串的第一部分变化,而其余部分保持不变.

这使Guids之间的等式检查更快(因为差异将在开始时),并改善截断的变化.

对于搜索列,SqlServer以与电话目录或字典类似的方式构建索引.搜索以“Over *”开头的单词比找到以“* flow”结尾的单词要快得多.

这意味着对于Sql server,任何顺序Guids都需要首先与重复值一起存储,因此它将它们存储在前面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读