Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么Guid.ToString()会颠倒字节顺序?_.net_Sql Server - Fatal编程技术网

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

.net 为什么Guid.ToString()会颠倒字节顺序?,.net,sql-server,.net,Sql Server,我们正在MS SQL数据库中存储一些Guid。有一些遗留代码执行Guid.ToString(),然后将它们传递到varchar(64)中,还有一些较新的代码使用唯一标识符参数传递它们。使用MS SQL Management studio查看结果时,它们看起来不同。前三个块的字节顺序颠倒,但最后一个块保持不变。为什么?Sql server中的Uniqueidentifier字段可以编制索引,“向后”字段也可以编制索引 可以从特定于计算机的信息和“事件时间”信息生成GUID .Net中的默认Guid

我们正在MS SQL数据库中存储一些Guid。有一些遗留代码执行
Guid.ToString()
,然后将它们传递到
varchar(64)
中,还有一些较新的代码使用唯一标识符参数传递它们。使用MS SQL Management studio查看结果时,它们看起来不同。前三个块的字节顺序颠倒,但最后一个块保持不变。为什么?

Sql server中的Uniqueidentifier字段可以编制索引,“向后”字段也可以编制索引

可以从特定于计算机的信息和“事件时间”信息生成GUID

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

[DllImport( "rpcrt4.dll", SetLastError = true )]
static extern int UuidCreateSequential( out Guid guid );
这将根据MAC地址()获得连续的GUID

如果您
.ToString()
这些顺序GUID,那么您将看到字符串的第一部分变化,而其余部分保持不变

这使得guid之间的相等性检查更快(因为差异将在开始时出现),并改进了截断guid的变化

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

这意味着,对于Sql server,任何顺序的GUI都需要首先使用重复值存储,所以它会将它们存储到前端