Re: [討論] Primary Key的資料型態選擇

作者: BigLoser (大魯蛇)   2014-09-08 13:29:37
※ 引述《jj09 (YA!春天快來了...)》之銘言:
: 在SQL Server上設計資料表格時
: 難免都會遇到PrimaryKey(PK)
: 要選擇使用int或uniqueidentifier資料型態
: 爬過Google大神後
: 多數的人還是比較推使用int
: 主要原因是在於存取效能與資料長度二個因素下
: 最後選擇int
: 因此想詢問大家
: 當版友們在設計一個軟體
: 這個軟體的使用者除了對公司內部份
: 同時外部的一般人也會是使用者的一部份
: 會如何選擇
: 為什麼會做這樣的選擇?
: 對我來說
: 為了要避免外部和內部使用者在試著用
: 可以預期PK的狀況去嘗試讀取別的資料紀錄
: 會選擇可能失去效能與儲存空間的狀況下
: 選擇uniqueidentifier
首先..你表達的還滿不清楚的,
無法理解你所說的,PK在外部使用者和內部使用者會產生不同的狀況,
通常,會使用uniqueid為的是分散式的資料庫,
因為uniqueid的唯一性,使得想個資料庫資料合併時,
省去了相當多的麻煩,
而另一個好處就是,你可以在程式中產生,而且在寫進資料庫"前"就知道他的ID,
很多時候PK使用int時,我們會讓他自動+1,
可是這時候,只有在這筆資料寫進資料庫"後",你才會知道他的ID是多少,
如果你不是分散式資料庫,又或是小系統,輕型資料庫(在行動裝置上面跑的),
在效能和空間是有必要的考量時,當然是使用int,
因為他快得多了,
而uniqueid這個東西,你就得看產生的機制了,
有些狀況,後產生的uniqueid會比之前的uniqueid還大,
這樣就沒有那麼嚴重的效能問題(index 不用重排),
不過也有些server雖然後產生的uniqueid會比之前的uniqueid還大,
可是在重開機後,規則就亂掉了,
建議先測試一下。

Links booklink

Contact Us: admin [ a t ] ucptt.com