SQL Server 的 主鍵 解決方案 NEWID() , 自增ID


在 SQL Server 表的主鍵有自增Id ,和  GUID。

  1.  自增Id

    優點:索引空間小,索引連續。在大量數據插入的時候性能有特別大的優勢。

    缺點:可移植性差,在數據遷移的時候。

  2. GUID

    優點:數據遷移的時候很容易。

    缺點:索引占用空間大,因為GUID的隨機性,在插入數據的時候會導致索引上的頁爭用。

 

SQL SERVER 2005新加了 NEWSEQUENTIALID(),這是個內置函數,不能用與 SELECT 

-- 創建的表加約束 default newsequentialid()
create table #t
(
    id uniqueidentifier not null  default newsequentialid()
    ,name varchar(100)
)
go

--插入表100條數據,並且要指定列名
insert into #t(name) values('a')
go 100

select * from #t

查詢結果:

    

 

如果這個表的值要被其他表作為外鍵使用,獲得這個值有兩中方法:

  1、SQL Server 2005添加的新特性 OUTPUT

insert into #t(name) 
output inserted.id 
values('a')

  2、也可以像插入自增Id一樣,獲取當前最大的值,

    MSDN對NEWSEQUENTIALID()解釋:在指定計算機上創建大於先前通過該函數生成的任何 GUID 的 GUID。

insert into #t(name) values('a')
select max(id) from #t

 

 https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms189786(v=sql.90)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM