关于SQL主键GUID和Identity的看法
GUID是什么意思及Guid在sqlserver中的使用

GUID是什么意思及Guid在sqlserver中的使⽤
GUID(全球唯⼀标识)是微软使⽤的⼀个术语,由⼀个特定的算法,给某⼀个实体,如Word⽂档,创建⼀个唯⼀的标识,GUID值就是这个唯⼀的标识码。
GUID⼴泛应⽤于微软的产品中,⽤于识别接⼝、复制品、记录以及其他对象。
不同类型的对象对应不同的GUID值。
例如,⼀个微软Access数据库使⽤的是16字节域为复制品创建⼀个唯⼀标识。
世界上的任何两台计算机都不会⽣成重复的 GUID 值。
GUID 主要⽤于在拥有多个节点、多台计算机的⽹络或系统中,分配必须具有唯⼀性的标识符。
在 Windows 平台上,GUID 应⽤⾮常⼴泛:注册表、类及接⼝标识、数据库、甚⾄⾃动⽣成的机器名、⽬录名等。
没有类似于select scope_identity()这样的函数,最好在应⽤程序中⾃⼰⽣成GUID 插⼊数据库, 这样就不需要利⽤主键默认值是newid(),
或者在后台使⽤newid()⽣成GUID
DECLARE @myid uniqueidentifier
SET @myid = NEWID()
insert into table1 (PK_FIELD) values (@myid)。
sqlserver uniqueidentifier 转换-概述说明以及解释

sqlserver uniqueidentifier 转换-概述说明以及解释1.引言1.1 概述概述部分应该简要介绍uniqueidentifier 数据类型及其在SQL Server 中的使用。
可以从以下几个方面进行阐述:1. uniqueidentifier 数据类型是SQL Server 中用于存储全局唯一标识符(GUID)的一种数据类型。
GUID 是一个128位的整数值,通常用于确保数据在不同数据库或系统中的唯一性。
2. 在SQL Server 中,uniqueidentifier 主要用于标识行和表中的数据,特别适用于分布式系统或需要全局唯一标识的数据模型。
3. uniqueidentifier 可以通过使用NEWID() 函数生成一个新的GUID 值。
该函数将返回一个符合标准GUID 格式的字符串,例如"6F9619FF-8B86-D011-B42D-00C04FC964FF"。
4. uniqueidentifier 数据类型在SQL Server 中的存储空间为16字节,因此占用的空间相对较大。
在设计数据库时需要考虑数据存储的效率和性能。
概述部分应该简明扼要地介绍uniqueidentifier 数据类型,并概括其在SQL Server 中的主要特点和应用。
1.2文章结构1.2 文章结构在本文中,将按照以下结构探讨SQL Server中uniqueidentifier的转换问题:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 uniqueidentifier的定义和用途2.2 uniqueidentifier与其他数据类型的转换方法3. 结论3.1 uniqueidentifier转换的重要性3.2 总结在引言部分,我们将介绍uniqueidentifier的基本概念和在SQL Server中的用途。
通过理解其定义和意义,读者将能够更好地理解转换问题的重要性。
SQL中的主键和外键

主键与外键一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,学号就是一个主键课程表(课程编号,课程名,学分)其中课程编号是唯一的,课程编号就是一个主键成绩表(学号,课程号,成绩)成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键同理成绩表中的课程号是课程表的外键定义主键和外键主要是为了维护关系数据库的完整性,总结一下:主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。
是能确定另一张表记录的字段,用于保持数据的一致性。
比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
二、主键、外键和索引的区别收藏聚集索引和非聚集索引的区别?聚集索引一定是唯一索引。
但唯一索引不一定是聚集索引。
聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。
三、数据库中主键和外键的设计原则主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。
主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。
必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。
而主键和外键的结构是这个设计过程的症结所在。
一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。
主键:关系数据库依赖于主键---它是数据库物理模式的基石。
主键在物理层面上只有两个用途:1. 惟一地标识一行。
guid知识点总结

guid知识点总结GUID (Globally Unique Identifier) 全局唯一标识符是一种由微软开发的UUID (Universally Unique Identifier) 标准的变种。
它是一个128位的数字,通常以16进制的形式表示,用于在计算机系统中唯一地标识对象、文档、组件和其他实体。
GUID的生成过程是基于计算机的硬件和当前的时间戳,确保了每次生成的GUID都是唯一的。
本文将从应用场景、生成方式、实际应用以及相关的注意事项等方面对GUID进行总结,帮助读者深入了解GUID的概念和用途。
一、应用场景1. 数据库中的唯一标识符在数据库中,GUID常被用作表的主键或唯一标识符,确保每个记录都有一个唯一的标识。
这样可以保证在分布式环境下不同数据库之间的数据唯一性,也可以避免在多个数据库中出现冲突。
2. 软件开发中的唯一标识符在软件开发中,GUID常被用作唯一标识符,保证对象的唯一性,如COM组件、Windows 注册表中的项等。
这样可以避免在不同的平台或系统中产生重复的标识符,确保了系统的稳定性和可靠性。
3. 文件管理中的唯一标识符在文件系统中,GUID常被用作唯一标识符,确保每个文件或目录都有一个唯一的标识。
这样可以避免文件重名或目录重名的情况,提高了文件的管理效率和可靠性。
4. 其他应用场景除了上述应用场景外,GUID还可以被用在网络通信、安全加密、设备管理等领域,用于唯一标识设备、会话、连接等实体,保证系统的安全性和可靠性。
二、生成方式1. 使用系统API在大多数操作系统中,都提供了生成GUID的API,如Windows平台的CoCreateGuid函数、Linux平台的uuid_generate函数等。
通过调用系统API,可以快速地生成一个唯一的GUID。
2. 使用第三方库除了系统API,也有一些第三方库提供了生成GUID的功能,如Java平台的java.util.UUID 类、Python平台的uuid模块等。
SQL--主键

SQL--主键
主键
数据库主键是指表中⼀个列或列的组合,其值能唯⼀地标识表中的每⼀⾏。
这样的⼀列或多列称为表的主键,通过它可强制表的实体完整性。
当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键。
⼀个表只能有⼀个 PRIMARY KEY 约束,⽽且 PRIMARY KEY 约束中的列不能接受空值。
由于 PRIMARY KEY 约束确保唯⼀数据,所以经常⽤来定义标识列。
主键的主要作⽤如下:
(1)保证实体的完整性;
(2)加快数据库的操作速度;
(3)在表中添加新记录时,数据库会⾃动检查新记录的主键值,不允许该值与其他记录的主键值重复;
(4) 数据库⾃动按主键值的顺序显⽰表中的记录。
如果没有定义主键,则按输⼊记录的顺序显⽰表中的记录。
主键具有的特点:唯⼀性、⾮空性。
设置主键语句⽰例:
code int primary key, 主键不能为空,不能重复,确保唯⼀性
设置⾃增长主键语句⽰例:
code int primary key identity(1,1) 从1开始,每次增长1,添加values时不⽤添加此列
设置外键:
在要设置外键的表上右键,选择设计,在需要设置外键的列名前右键,如下图:
选择关系单击,出现对话框,单击添加,单击表和列规范后⾯的省略号,如下图:
在出现的界⾯做出如下操作:
点击确定,再点击确定,操作成功。
sqlserver identity 名称

sqlserver identity 名称SQL Server中的Identity是一个用于生成唯一标识符的特殊特性。
它可以为表中的行自动生成唯一的数字值,并且在插入数据时自动递增。
Identity是一个非常有用的功能,它可以用于创建主键或唯一标识符,并确保数据的完整性和一致性。
在本文中,我们将详细介绍SQL Server的Identity特性,包括其概念、用法和注意事项。
Identity是SQL Server中的一个内置函数,用于生成唯一的整数值。
它被设计用于解决生成自增、唯一标识符或主键的需求。
在使用Identity之前,我们需要在表的列定义中声明该特性。
在创建表时,我们可以将任意一个整数列声明为Identity列,并指定其起始值和递增步长。
在插入数据时,可以省略该列的值,由数据库自动生成。
每次插入数据后,Identity列的值都会自动递增。
以下是一个创建包含Identity列的示例表的SQL语句:```sqlCREATE TABLE [dbo].[MyTable]([ID] INT IDENTITY(1,1) PRIMARY KEY,[Name] NVARCHAR(50) NOT NULL)```在上面的示例中,我们创建了一个名为MyTable的表,该表包含了一个名为ID的列。
我们使用了`IDENTITY(1,1)`来声明该列为Identity列,其中1是起始值,1是递增步长。
另外,我们还将ID列指定为主键,确保其唯一性。
在插入数据时,可以省略ID列的值,数据库会自动生成唯一的数字值。
下面是一个向MyTable表中插入数据的示例SQL语句:```sqlINSERT INTO [dbo].[MyTable] ([Name])VALUES ('John Doe')```在上面的示例中,我们向MyTable表中插入了一行数据,并省略了ID列的值。
SQL Server会自动生成一个唯一的数字值,并将其赋给ID列。
使用GUID作为数据表主键的好处

使⽤GUID作为数据表主键的好处使⽤GUID作为数据表主键好处数据表主健通常采⽤以下 3种⽅式:1. ⾃动递增值2. 唯名称这个是使⽤⾃⼰定义算法来⽣成个唯序列号3. GUID(全局唯标识符)GUID和⾃动递增值及唯名称⽐较GUID在客户端⽣成由GUID特性决定通过GUID⽣成值可能出现重复机会⼏乎等于零因此保证在插⼊表时候主键值唯可以⽅便处理分布式数据提交⽐如:分店数据向总店提交――直接将该部分数据插⼊即可⽀持离线数据处理对本地数据包进⾏新增记录时即可将该数据表关键字段值赋值其处理思路⽅法是和在线新增时是致⾃动递增值在数据库服务器端⽣成由于该值是由数据库系统内部处理亦保证其唯性但由于其是在数据库服务器端⽣成因此必须将该值返回客户端客户端通过该值过⾏其它操作⽐如张单据(主从表)是使⽤⾃动递增值当插⼊单据抬头后必须将单据抬头关键字段值返回再插⼊单据明细(单据明细是通过单据抬头关键字段进⾏关联)不能很好处理分布式数据提交⽐如:分店数据向总店提交――提交数据时必须重新⽣成该数据表关键字段值以保证该字段值唯要⽀持离线数据处理需要进⾏额外处理对本地数据包进⾏保存记录(保存到本地)时需要插⼊个假设唯值在提交离线数据回数据服务器时再重新⽣成真正唯值并重新进⾏相关处理唯名称在客户端⽣成或在服务端⽣成相对于⾃动递增值区别地⽅就是⾃⼰维护⽣成唯值算法及所保存临时值容易造成出错或其它问题如果是在客户端⽣成唯值话还必须保证所⽣成值是唯不能很好处理分布式数据提交⽐如:分店数据向总店提交――提交数据时必须重新⽣成(或预先处理)该数据表关键字段值以保证该字段值唯要⽀持离线数据处理需要进⾏额外处理对本地数据包进⾏保存记录(保存到本地)时需要插⼊个假设唯值在提交离线数据回数据服务器时再重新⽣成真正唯值并重新进⾏相关处理例⼦介绍说明下⾯以个新增单据保存⽐较GUID和⾃动递增值/唯名称差别动作GUID⾃动递增值/唯名称单据抬头新增单据抬头关键字段值:获取并填写单据抬头关键字段值:⽆保存直接保存⾸先获取并填写关键字段值然后再进⾏保存返回直接返回返回时必须将关键字段值返回单据明细新增关联单据抬头字段值:直接填写单据明细关键字段值:获取并填写关联单据抬头字段值:⽆单据明细关键字段值:⽆保存直接保存获取单据抬头关键字段值并填写到单据明细关联单据抬头字段中;然后获取并填写单据明细关键字段值;再进⾏保存综合以上所述⽤GUID作为数据表关键字段值是可以减轻关键字段相关操作并且是最直接实⽤思路⽅法。
guid相关知识点总结

guid相关知识点总结在本文中,我们将探讨GUID的概念、它的用途、如何生成GUID以及一些相关的重要知识点。
1. GUID的概念GUID是由微软公司创建的,它的全名是全局唯一标识符(Globally Unique Identifier)。
在其他操作系统中,它也被称为UUID(Universally Unique Identifier)。
GUID是一个128位的数字,通常以32个十六进制数字的形式表示,中间用破折号或其他符号分隔开来,以提高可读性。
GUID是通过一个特定的算法生成的,这个算法确保了GUID的全局唯一性。
这意味着即使在不同的计算机系统上,即使在不同的时间生成的GUID也是唯一的,这使得GUID成为一种理想的标识符。
2. GUID的用途在计算机系统中,GUID通常被用作标识符,在分布式系统中或者在数据库中,它们可以被用来唯一地标识某个对象或资源。
例如,在Microsoft Windows操作系统中,每一个注册表项都有一个唯一的GUID来标识它,这样就可以在整个系统中唯一地识别这个注册表项。
除了在操作系统中的使用,GUID还被广泛应用在许多领域,比如在数据库中作为主键、在网络通讯中用于唯一标识数据包、在软件开发中用于标识组件等等。
3. 如何生成GUID在许多编程语言中,都提供了生成GUID的方法。
比如在C#中,可以使用Guid.NewGuid()方法来生成一个新的GUID;在Java中,可以使用java.util.UUID类来生成UUID。
总的来说,生成GUID的方法有两种:一种是通过硬件信息来生成,另一种是通过算法生成。
通过硬件信息来生成的GUID通常是基于计算机的网卡地址、硬盘序列号、CPU序列号等信息,这样生成的GUID是独一无二的,但缺点是需要依赖硬件信息。
而通过算法生成的GUID则不依赖于硬件信息,只要使用相同的算法就可以生成相同的GUID。
4. GUID的格式GUID通常以32个十六进制数字的形式表示,中间用破折号或其他符号分隔开来,以提高可读性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
据库中使用自增量字段与Guid字段主键的性能对比1.概述:在我们的数据库设计中,数据库的主键是必不可少的,主键的设计对整个数据库的设计影响很大.我就对自动增量字段与Guid字段的性能作一下对比,欢迎大家讨论.2.简介:1.自增量字段自增量字段每次都会按顺序递增,可以保证在一个表里的主键不重复。
除非超出了自增字段类型的最大值并从头递增,但这几乎不可能。
使用自增量字段来做主键是非常简单的,一般只需在建表时声明自增属性即可。
自增量的值都是需要在系统中维护一个全局的数据值,每次插入数据时即对此次值进行增量取值。
当在当量产生唯一标识的并发环境中,每次的增量取值都必须最此全局值加锁解锁以保证增量的唯一性。
这可能是一个并发的瓶颈,会牵扯一些性能问题。
在数据库迁移或者导入数据的时候自增量字段有可能会出现重复,这无疑是一场恶梦(本人已经深受其害).如果要搞分布式数据库的话,这自增量字段就有问题了。
因为,在分布式数据库中,不同数据库的同名的表可能需要进行同步复制。
一个数据库表的自增量值,就很可能与另一数据库相同表的自增量值重复了。
2.uniqueidentifier(Guid)字段在MS Sql 数据库中可以在建立表结构是指定字段类型为uniqueidentifier,并且其默认值可以使用NewID()来生成唯一的Guid(全局唯一标识符).使用NewID生成的比较随机,如果是SQL 2005可以使用NewSequentialid()来顺序生成,在此为了兼顾使用SQL 2000使用了NewID().Guid:指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,其算法是通过以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字生成。
其格式为:04755396-9A29-4B8C-A38D-00042C1B9028.Guid的优点就是生成的id比较唯一,不管是导出数据还是做分步开发都不会出现问题.然而它生成的id比较长,占用的数据库空间也比较多,随着外存价格的下降,这个也无需考虑.另外Guid不便于记忆,在这方面不如自动增量字段,在作调试程序的时候不太方便。
3.测试:1.测试环境操作系统:windows server 2003 R2 Enterprise Edition Service Pack 2 数据库:MS SQL 2005CPU:Intel(R) Pentium(R) 4 CPU 3.40GHz内存:DDRⅡ667 1G硬盘:WD 80G2.数据库脚本--自增量字段表CREATE TABLE[dbo].[Table_Id]([Id][int]IDENTITY(1,1) NOT NULL,[Value][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT[PK_Table_Id]PRIMARY KEY CLUSTERED([Id]ASC)WITH (IGNORE_DUP_KEY =OFF) ON[PRIMARY]) ON[PRIMARY]GO--Guid字段表CREATE TABLE[dbo].[Table_Guid]([Guid][uniqueidentifier]NOT NULL CONSTRAINT[DF_Table_G uid_Guid]DEFAULT (newid()),[Value][varchar](50) COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT[PK_Table_Guid]PRIMARY KEY CLUSTERED([Guid]ASC)WITH (IGNORE_DUP_KEY =OFF) ON[PRIMARY]) ON[PRIMARY]GO测试代码1using System;2using System.Collections.Generic;3using System.Text;4using System.Data.SqlClient;5using System.Diagnostics;6using System.Data;78namespace GuidTest9{10class Program11 {12string Connnection = "server=.;database=GuidTest;I ntegrated Security=true;";13static void Main(string[] args)14 {15 Program app = new Program();16int Count = 10000;17 Console.WriteLine("数据记录数为{0}",Count);18//自动id增长测试;19 Stopwatch WatchId = new Stopwatch();20 Console.WriteLine("自动增长id测试");21 Console.WriteLine("开始测试");22 WatchId.Start();23 Console.WriteLine("测试中");2425 app.Id_InsertTest(Count);26//app.Id_ReadToTable(Count);27 //app.Id_Count();2829 //查询第300000条记录;30 //app.Id_SelectById();3132 WatchId.Stop();33 Console.WriteLine("时间为{0}毫秒",WatchId.ElapsedMilliseconds);34 Console.WriteLine("测试结束");3536 Console.WriteLine("-----------------------------------------");37//Guid测试;38 Console.WriteLine("Guid测试");39 Stopwatch WatchGuid = new Stopwatch();40 Console.WriteLine("开始测试");41 WatchGuid.Start();42 Console.WriteLine("测试中");4344 app.Guid_InsertTest(Count);45//app.Guid_ReadToTable(Count);46 //app.Guid_Count();4748 //查询第300000条记录;49 //app.Guid_SelectById();5051 WatchGuid.Stop();52 Console.WriteLine("时间为{0}毫秒", WatchGuid.Ela psedMilliseconds);53 Console.WriteLine("测试结束");54 Console.Read();55 }5657///<summary>58///自动增长id测试59///</summary>60private void Id_InsertTest(int count)61 {62string InsertSql="insert into Table_Id ([Valu e]) values ({0})";63using (SqlConnection conn = new SqlConnection(Connnection))64 {65 conn.Open();66 SqlCommand com = new SqlCommand();67for (int i = 0; i < count; i++)68 {69 com.Connection = conn;70 mandText = string.Format(Insert Sql, i);71 com.ExecuteNonQuery();72 }73 }74 }7576///<summary>77///将数据读到Table78///</summary>79private void Id_ReadToTable(int count)80 {81string ReadSql = "select top " + count.ToStrin g() + " * from Table_Id";82using (SqlConnection conn = new SqlConnection (Connnection))83 {84 SqlCommand com = new SqlCommand(ReadSql, c onn);85 SqlDataAdapter adapter = new SqlDataAdapte r(com);86 DataSet ds = new DataSet();87 adapter.Fill(ds);88 Console.WriteLine("数据记录数为:{0}", ds.Tab les[0].Rows.Count);89 }90 }9192///<summary>93///数据记录行数测试94///</summary>95private void Id_Count()96 {97string ReadSql = "select Count(*) from Table_I d";98using (SqlConnection conn = new SqlConnection (Connnection))99 {100 SqlCommand com = new SqlCommand(ReadSql, c onn);101 conn.Open();102object CountResult = com.ExecuteScalar(); 103 conn.Close();104 Console.WriteLine("数据记录数为:{0}",CountRe sult);105 }106 }107108///<summary>109///根据id查询;110///</summary>111private void Id_SelectById()112 {113string ReadSql = "select * from Table_Id wher e Id="+300000;114using (SqlConnection conn = new SqlConnection (Connnection))115 {116 SqlCommand com = new SqlCommand(ReadSql, c onn);117 conn.Open();118object IdResult = com.ExecuteScalar();119 Console.WriteLine("Id为{0}", IdResult);120 conn.Close();121 }122 }123124///<summary>125/// Guid测试;126///</summary>127private void Guid_InsertTest(int count)128 {129string InsertSql = "insert into Table_Guid ([V alue]) values ({0})";130using (SqlConnection conn = new SqlConnection (Connnection))131 {132 conn.Open();133 SqlCommand com = new SqlCommand();134for (int i = 0; i < count; i++)135 {136 com.Connection = conn;137 mandText = string.Format(Insert Sql, i);138 com.ExecuteNonQuery();139 }140 }141 }142143///<summary>144/// Guid格式将数据库读到Table145///</summary>146private void Guid_ReadToTable(int count)147 {148string ReadSql = "select top "+count.ToString()+" * from Table_GuID";149using (SqlConnection conn = new SqlConnection (Connnection))150 {151 SqlCommand com = new SqlCommand(ReadSql, c onn);152 SqlDataAdapter adapter = new SqlDataAdapte r(com);153 DataSet ds = new DataSet();154 adapter.Fill(ds);155 Console.WriteLine("数据记录为:{0}", ds.Table s[0].Rows.Count);156 }157 }158159///<summary>160///数据记录行数测试161///</summary>162private void Guid_Count()163 {164string ReadSql = "select Count(*) from Table_G uid";165using (SqlConnection conn = new SqlConnection (Connnection))166 {167 SqlCommand com = new SqlCommand(ReadSql, c onn);168 conn.Open();169object CountResult = com.ExecuteScalar(); 170 conn.Close();171 Console.WriteLine("数据记录为:{0}", CountRes ult);172 }173 }174175///<summary>176///根据Guid查询;177///</summary>178private void Guid_SelectById()179 {180string ReadSql = "select * from Table_Guid whe re Guid='C1763624-036D-4DB9-A1E4-7E16318C30DE'";181using (SqlConnection conn = new SqlConnection (Connnection))182 {183 SqlCommand com = new SqlCommand(ReadSql, c onn);184 conn.Open();185object IdResult = com.ExecuteScalar(); 186 Console.WriteLine("Guid为{0}", IdResult); 187 conn.Close();188 }189 }190 }191192}1933.数据库的插入测试测试1数据库量为:100条运行结果测试2数据库量为:10000条运行结果测试3数据库量为:100000条运行结果测试4数据库量为:500000条运行结果4.将数据读到DataSet中测试1读取数据量:100运行结果测试2读取数据量:10000 运行结果测试3读取数据量:100000 运行结果测试4读取数据量:500000 运行结果4.记录总数测试测试结果5.指定条件查询测试查询数据库中第300000条记录,数量记录量为610300.4.总结:使用Guid作主键速度并不是很慢,它反而要比使用自动增长型的增量速度还要快.。