码迷,mamicode.com
首页 > 数据库 > 详细

GUID基本概念及C#、SqlServer中GUID基本用法

时间:2017-08-12 17:04:13      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:总数   应用   长度   sel   存储空间   tostring   情况   数字   write   

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

GUID字符串形式格式是“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中x表示0-9或a-z中的任意字符,例如5ff62d65-492f-4b30-81b4-d0c23a4560dd就是一GUID字符串。

 

用C#中生成GUID(默认小写):

//生成新guid
Guid guid1 = Guid.NewGuid();
Console.WriteLine(guid1.ToString());

//利用guid字符串构造出guid
Guid guid2 = new Guid(guid1.ToString());
Console.WriteLine(guid2.ToString());

Console.ReadLine();

用Sql Server生成GUID(默认大写):

select NEWID()

Sql Server数据库表中数据类型是uniqueidentifier的列即存储GUID字符串。

 

缺点:

1.GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的。

2.GUID 值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着如果在数据库中使用 uniqueidentifier 列作为主键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。

优点:

1.同 IDENTITY 列相比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用程序的后续处理提供了很大方便。

2.便于数据库移植,其它数据库中并不一定具有 IDENTITY 列,而 Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的 GUID 值存入数据库,它不会对目标数据带来影响。

3.便于数据库初始化,如果应用程序要加载一些初始数据, IDENTITY 列的处理方式就比较麻烦,而 uniqueidentifier 列则无需任何处理,直接用 T-SQL 加载即可。

4.便于对某些对象或常量进行永久标识,如类的 ClassID、对象的实例标识等。

 

GUID基本概念及C#、SqlServer中GUID基本用法

标签:总数   应用   长度   sel   存储空间   tostring   情况   数字   write   

原文地址:http://www.cnblogs.com/Arlar/p/7350516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!