mysql為什麼不推薦使用uuid作為主鍵

2021-10-24 21:28:07 字數 465 閱讀 8477

前言:在mysql中設計表的時候,mysql官方推薦不要使用uuid或者不連續不重複的雪花id(long形且唯一),而是推薦連續自增的主鍵id,官方的推薦是auto_increment,那麼為什麼不建議採用uuid,使用uuid究竟有什麼壞處?本篇部落格我們就來分析這個問題,**一下內部的原因。

1.1:要說明這個問題,我們首先來建立三張表,分別是user_auto_key,user_uuid,user_random_key,分別表示自動增長的主鍵,uuid作為主鍵,隨機key作為主鍵,其它我們完全保持不變.根據控制變數法,我們只把每個表的主鍵使用不同的策略生成,而其他的字段完全一樣,然後測試一下表的插入速度和查詢速度:

注:這裡的隨機key其實是指用雪花演算法算出來的前後不連續不重複無規律的id:一串18位長度的long值

id自動生成表:

使用者uuid表

隨機主鍵表:

為什麼不推薦使用外來鍵?

外來鍵的優點 一 資料一致性 由資料庫自身保證資料一致性 完整性會更可靠,程式很難100 保證資料的一致性 完整性 二 er圖可靠性 有主外來鍵的資料庫設計可以增加er圖的可讀性 外來鍵的缺點 一 級聯問題 阿里巴巴的開發手冊中,就曾指出強制要求不允許使用外來鍵,一切外來鍵概念必須在應用層解決。因為...

為什麼MySQL不推薦使用子查詢和join

前言 1.對於mysql,不推薦使用子查詢和join是因為本身join的效率就是硬傷,一旦資料量很大效率就很難保證,強烈推薦分別根據索引單錶取資料,然後在程式裡面做join,merge資料。2.子查詢就更別用了,效率太差,執行子查詢時,mysql需要建立臨時表,查詢完畢後再刪除這些臨時表,所以,子查...

為什麼MySQL不推薦使用子查詢和join

前言 1.對於mysql,不推薦使用子查詢和join是因為本身join的效率就是硬傷,一旦資料量很大效率就很難保證,強烈推薦分別根據索引單錶取資料,然後在程式裡面做join,merge資料。2.子查詢就更別用了,效率太差,執行子查詢時,mysql需要建立臨時表,查詢完畢後再刪除這些臨時表,所以,子查...