标签归档:NEWSEQUENTIALID()

mssql sqlserver 自增长ID的另类实现-NEWSEQUENTIALID()


摘要:
下文将分享sql server设计自增长ID的另类方法,如下所示:
实验环境:sql server 2008 R2


常见数据表设计中,自增长ID的设计方法,有以下几种方式:
1.设置一个标识列,定义标识种子和步长,让sqlserver自动增长
2.建立一张专用表,手动控制自增列
3.设置一列,列默认值放入NEWSEQUENTIALID()函数自动生成

NEWSEQUENTIALID()

NEWSEQUENTIALID() 将生成一个自增的guid类型,guid可以保证数据库合并时,不会出现主键重复。

NEWSEQUENTIALID() 生成主键,举例说明:

   create table [maomao365.com]
(
keyId UNIQUEIDENTIFIER  PRIMARY KEY  DEFAULT (NEWSEQUENTIALID()),
info varchar(88) not null 
)
go
insert [maomao365.com] (info) values ('sqlserver教程')
insert [maomao365.com] (info) values ('sqlserver')
insert [maomao365.com] (info) values ('数据初始化')
insert [maomao365.com] (info) values ('数据测试') 
go
select * from [maomao365.com]

go
insert [maomao365.com] (info) values (N'自增长测试')
go
select keyId from [maomao365.com]

go
truncate table [maomao365.com]
drop     table [maomao365.com]

mssql_sqlserver_NewSequentialID

mssql_sqlserver_NewSequentialID

mssql sqlserver newid()、newsequentialid()区别说明


摘要:
下文讲述函数newid()、newsequentialid()的功能区别如下所示:
实验环境:sql server2008 R2


newid()、newsequentialid()函数相同点:
都可以生成guid数据,都可以放入列默认值上生成default value。
newid()、newsequentialid()函数不同点:
newId() 生成的guid是无序
newsequentialid() 生成递增顺序的guid;
newId()支持select newId() 赋值和选择操作
newsequentialid() 不支持select newsequentialid()操作,newsequentialid()只能用于列的默认值;

newsequentialid()函数优点说明:
由于newsequentialid()生成一个递增的guid,当我们对默认值为此列建立索引时,索引可以有序的分布,方便数据排序检索
使用newsequentialid()生成的索引数据,当我们进行数据新增时,索引进行相关变动时,涉及操作面小,只需按序增加相应的节点信息,大大的提高了数据插入效率

mssql sqlserver NEWSEQUENTIALID() 关键字简介


摘要:
下文讲述NEWSEQUENTIALID() 函数的用法,如下所示:
实验环境:sql server 2008 R2



NEWSEQUENTIALID() 函数功能及应用场景

NEWSEQUENTIALID() 函数功能:
返回一个 uniqueidentifier 类型,
此值会大于上一次创建的guid值

NEWSEQUENTIALID() 函数应用场景:
只能应用于 uniqueidentifier 列类型上 创建默认值使用;
由于此函数返回的值依次从小到大,所以对创建索引排序非常有利,方便索引值得存储;
当计算机没有网卡时,NEWSEQUENTIALID() 生成的 GUID值,在该特定计算机中是唯一的;
故建议创建 uniqueidentifier列默认值使用此函数。


NEWSEQUENTIALID() 应用举例

  CREATE TABLE test  
(guidOne uniqueidentifier DEFAULT NEWID(),   
 guidTwo uniqueidentifier DEFAULT NewSequentialID())  

INSERT INTO test DEFAULT  
VALUES  
INSERT INTO test DEFAULT  
VALUES  
INSERT INTO test DEFAULT  
VALUES  
INSERT INTO test DEFAULT  
VALUES  
INSERT INTO test DEFAULT  
VALUES  
 
SELECT *  
FROM test  
go
truncate table test  
DROP     table test  
GO  
mssql_sqlserver_NewSequentialID

mssql_sqlserver_NewSequentialID