轉! 主鍵的使用

2022-03-15 10:50:46 字數 1882 閱讀 3260

一、產生guid的方法

1、sqlserver中使用系統自帶的newid函式: select newid()

2、c#中,使用guid型別的newguid方法:

guid gid;

gid = guid.newguid();

console.writeline(gid);

console.writeline(guid.newguid());

二、guid與int自動增加作主鍵的優缺點

int自動增字段的優點:占用空間小、無需開發人員干預、易讀;

缺點:效率低,資料匯入匯出的時候很痛苦。

guid的優點:效率高,資料匯入匯出方便;缺點是占用空間大,不易讀。

業界主流傾向使用guid作主鍵。因為主鍵一般不是給外人看的,而且現在硬碟空間越來越大,不在乎這一點空間。

優點是:

同 identity 列相比,uniqueidentifier 列可以通過 newid() 函式提前得知新增加的行 id,為應用程式的後續處理提供了很大方便。

便於資料庫移植,其它資料庫中並不一定具有 identity 列,而 guid 列可以作為字元型列轉換到其它資料庫中,同時將應用程式中產生的 guid 值存入資料庫,它不會對原有資料帶來影響。

便於資料庫初始化,如果應用程式要載入一些初始資料, identity 列的處理方式就比較麻煩,而uniqueidentifier 列則無需任何處理,直接用 t-sql 載入即可。

便於對某些物件或常量進行永久標識,如類的 classid,物件的例項標識,uddi 中的聯絡人、服務介面、tmodel標識定義等。

缺點是:

guid 值較長,不容易記憶和輸入,而且這個值是隨機、無順序的。

guid 的值有 16 個位元組,與其它那些諸如 4 位元組的整數相比要相對大一些。這意味著如果在資料庫中使用 uniqueidentifier 鍵,可能會帶來兩方面的消極影響:儲存空間增大;索引時間較慢。

1、sqlserver中使用系統自帶的newid函式: select newid()

2、c#中,使用guid型別的newguid方法:

guid gid;

gid = guid.newguid();

console.writeline(gid);

console.writeline(guid.newguid());

二、guid與int自動增加作主鍵的優缺點

int自動增字段的優點:占用空間小、無需開發人員干預、易讀;

缺點:效率低,資料匯入匯出的時候很痛苦。

guid的優點:效率高,資料匯入匯出方便;缺點是占用空間大,不易讀。

業界主流傾向使用guid作主鍵。因為主鍵一般不是給外人看的,而且現在硬碟空間越來越大,不在乎這一點空間。

優點是:

同 identity 列相比,uniqueidentifier 列可以通過 newid() 函式提前得知新增加的行 id,為應用程式的後續處理提供了很大方便。

便於資料庫移植,其它資料庫中並不一定具有 identity 列,而 guid 列可以作為字元型列轉換到其它資料庫中,同時將應用程式中產生的 guid 值存入資料庫,它不會對原有資料帶來影響。

便於資料庫初始化,如果應用程式要載入一些初始資料, identity 列的處理方式就比較麻煩,而uniqueidentifier 列則無需任何處理,直接用 t-sql 載入即可。

便於對某些物件或常量進行永久標識,如類的 classid,物件的例項標識,uddi 中的聯絡人、服務介面、tmodel標識定義等。

缺點是:

guid 值較長,不容易記憶和輸入,而且這個值是隨機、無順序的。

guid 的值有 16 個位元組,與其它那些諸如 4 位元組的整數相比要相對大一些。這意味著如果在資料庫中使用 uniqueidentifier 鍵,可能會帶來兩方面的消極影響:儲存空間增大;索引時間較慢。

使用序列建立主鍵

一,什麼是序列 序列 sequence 是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值 型別為數字 其主要 的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下乙個值。建立序列需 要create sequence系統許可權。序列的建立語法如下 c...

Django使用聯合主鍵

今天閒著沒事,突然想起乙個以前遇到的乙個小問題。一直忘了來驗證自己的解決方案,所以今天特意來查詢了些資料來驗證下自己的想法。整理如下 單張表內建立聯合主鍵 class iottemp models.model mac models.charfield max length 64,blank fals...

使用Hibernate主鍵產生器生成主鍵

本文講述如何使用使用hibernate主鍵產生器生成主鍵。主鍵由外部程式負責生成,無需hibernate參與。常用的資料庫,如oracle db2 sqlserver mysql 等,都提供了易用的主鍵生成機制。hibernate主鍵產生器 可選項說明 1 assigned 主鍵由外部程式負責生成,...