在 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)