# Table 的 Id 到底用 int 好 還是 varchar(36) Guid 好? ###### tags: `SQL` ## 用 int 的優缺點 * 優點:索引,儲存空間較小,搜尋較快 * 缺點:同時寫入相同 key 的問題,需要特別寫一個 Seqno manager ### 如何實現 Seqno manager ? #### DB 部分 * 建立一個 Table => tblSeqNoManager * 欄位 => TableName、SeqNo * 使用概念 => 所有 Table 的 SeqNo 都從這個 tblSeqNoManager 取得,取得後必須將對應的 Table SeqNo 數字+1 * <span style="color:red">**必須用另一個 DB 連線,取完馬上寫入!!**</span> #### Code 部分 ( 大概的感覺 ) ``` public class SeqNoManager{ public string TableName { get; set; } public int SeqNo { get; set; } public int GetSeqNo(string tableName){ // 判斷是否存在此 Table 的資料,若不存在建立新 Table if(IsTableExist(tableName)){ // 依照 Table 名稱取得流水號 ... return seqNo; } else{ AddTable(); return 1; } } private bool IsTableExist(string tableName){ // Do Something... } private void AddTable(string tableName){ // Do Something... } } ``` --- ## 用 Guid 的優缺點 * 優點:沒有同時寫入相同 key 的問題 * 缺點:索引問題,儲存空間較大,搜尋較慢 ### 嘗試解決 Guid 索引問題 [[C#]產生順序GUID](https://dotblogs.com.tw/ricochen/2014/08/26/146371)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up