亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于數據庫表的主鍵ID的數據類型(使用GUID和自增長類型)的疑惑

我發現好多的項目中現在流行的數據表主鍵是GUID,一般在數據庫中的存儲類型為char(36)。但是我個人感覺這個設計很浪費資源:一是字段長度是36(點位36字節),而自增長只占8字節(int);二是貌似在此字段上建立索引沒有什么實際作用(GUID中字符無序的);三是在二、三范式下關聯查詢時主鍵偏偏又是關聯字段,增加了記錄的行長度的同時查詢用索引又無實際效果。在這三種情況下我覺得用GUID做主鍵簡直是“暴殄天物”(個人認為),可為什么還有好多人這么用呢?而且在百度找這方面的資料時,看到有人說用自增長作主鍵的人都是國內不專業的開發人員(聽那口氣貌似對這樣的人很不屑的樣子)。


我就疑惑了,用GUID作主鍵就很專業嗎,那么對于數據查詢速度的考慮呢?

老師,你們在開發過程中是用什么做主鍵的呢,很糾結,希望老師能回復下,謝謝

正在回答

1 回答

對于大數據量,建議使用guid做主鍵。而使用int會得到最佳的性能。公司一般都會是為了安全防止注入等讓別人獲取不到數據,一般都是數據會加密的,而int作為主鍵的確適合數據,但是如果數據大量超出int呢。而且他很難控制分布式的數據表。

使用INT做主鍵的優點:

??? 1、需要很小的數據存儲空間,僅僅需要4 byte 。

??? 2、insert和update操作時使用INT的性能比GUID好,所以使用int將會提高應用程序的性能。

??? 3、index和Join 操作,int的性能最好。

??? 4、容易記憶。

??? 5、支持通過函數獲取最新的值,如:Scope_Indentity() 。

使用INT做主鍵的缺點

??? 1、如果經常有合并表的操作,就可能會出現主鍵重復的情況。

??? 2、使用INT數據范圍有限制。如果存在大量的數據,可能會超出INT的取值范圍。

??? 3、很難處理分布式存儲的數據表。

使用GUID做主鍵的優點:

??? 1、它是獨一無二的。

??? 2、出現重復的機會少。

??? 3、適合大量數據中的插入和更新操作。

??? 4、跨服務器數據合并非常方便。

使用GUID做主鍵的缺點:

??? 1、存儲空間大(16 byte),因此它將會占用更多的磁盤大小。

??? 2、很難記憶。join操作性能比int要低。

??? 3、沒有內置的函數獲取最新產生的guid主鍵。

??? 4、GUID做主鍵將會添加到表上的所以其他索引中,因此會降低性能。


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于數據庫表的主鍵ID的數據類型(使用GUID和自增長類型)的疑惑

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號