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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

INT和VARCHAR主鍵之間是否存在真正的性能差異?

INT和VARCHAR主鍵之間是否存在真正的性能差異?

心有法竹 2019-07-24 10:30:08
INT和VARCHAR主鍵之間是否存在真正的性能差異?使用INT與VARCHAR作為MySQL中的主鍵之間是否存在可衡量的性能差異?我想使用VARCHAR作為參考列表的主鍵(想想美國,國家代碼),并且同事不會將INT AUTO_INCREMENT作為所有表的主鍵。我的論點,詳見這里,是INT和VARCHAR之間的性能差異可以忽略不計,因為每個INT外鍵引用將需要一個JOIN,使參考的意義上說,VARCHAR鍵則直接呈現的信息。那么,有沒有人有這個特定用例的經驗以及與之相關的性能問題?
查看完整描述

3 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您可以通過使用所謂的自然鍵而不是代理鍵來避免一些已連接的查詢。只有您可以評估其在您的應用中的好處是否重要。

也就是說,您可以在應用程序中測量最快速的查詢,因為它們可以處理大量數據,也可以非常頻繁地執行。如果這些查詢從消除連接中受益,并且不使用varchar主鍵,那么就這樣做。

不要對數據庫中的所有表使用任一策略。在某些情況下,自然鍵可能更好,但在其他情況下,代理鍵更好。

其他人提出一個很好的觀點,即在實踐中很少有自然鍵永遠不會改變或有重復,所以代理鍵通常是值得的。


查看完整回答
反對 回復 2019-07-24
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

這與表現無關。這是關于什么是一個好主鍵。隨著時間的推移,獨特而不變。您可能認為諸如國家/地區代碼之類的實體從未隨時間而變化,并且是主鍵的良好候選者。但痛苦的經歷是很少見到的。

INT AUTO_INCREMENT滿足“獨特且不變的時間”條件。因此偏好。


查看完整回答
反對 回復 2019-07-24
  • 3 回答
  • 0 關注
  • 2243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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