Mysql我通過程式來生成乙個UUID,做主鍵可行嗎?

時間 2021-06-06 08:11:19

1樓:水巷先生

問題一分為二

Q1 . MySQL我通過程式來生成乙個UUID,做主鍵可行嗎?

當然,完全沒有任何問題,你完全可以這麼幹!這裡需要注意的別的問題,比如:要通過程式約束,保證唯一性。不過程式幹的事情多了,效能損耗多少都是會有的。

Q2 . 是否有必要設定乙個無實際意義的自增ID做主鍵?

當然,完全是有必要的,你完全應該這麼幹!用自增ID做主鍵,替代程式生成的UUID,當然UUID也可以存在,不做主鍵,可以做唯一索引,好處呢?

①自增主鍵有序。有序對於資料庫來說,是乙個非常好的福利②自增主鍵是聚簇索引。效能很好

③儲存占用空間更小

④MySQL對此有相應優化

2樓:暴躁的李Sir

使用自增主鍵其實是適應mysql底層引擎的b樹和b+樹,你這樣修改主鍵的話插入和查詢都會影響效能,因為b樹查詢是會逐次比較的,數字好比較,uuid不好比較,所以還是自帶自增主鍵比較好

3樓:趙偉

與使用自增列做PK相比,你這樣做有2個缺點:

(1)pk值是亂序的,對插入效能有阻礙。

(2)PK值占用儲存空間較大,對效能有影響(3)生成uuid的計算耗時更多

通過mysql做乙個家族關係的表(id,pid,name),通過乙個id怎麼判斷是否某個節點的子節點?

Kaciras 如果你的表一定要是 id,pid,name 這種結構,那只能遞迴。如果你可以自定義表結構那還有以下選擇 如果只有判斷後代這乙個需求,那就使用並查集。如果還有其它查詢需求,比如查x是y的第幾代啊 x到y之間的所有節點啊,可以參考我做過的乙個類似的功能 在資料庫中儲存一棵樹,實現無限級分...

如何通過乙個 int 陣列生成唯一的 int 型別 id?且陣列元素固的話生成的 id 也固定?

陳森 不可能是唯一的。其實問題可以轉化為乙個簡單的排列組合問題 1000個不同元素裡每次取出0個,1個,2個,1000個不同元素,那麼它產生的所有可能共有 2 eeimg 1 顯然是不可能一一對映的。 zpan 如果你知道這個陣列的 int 的組合是有限的話,那可以排序後插入乙個 set,並且插入的...

想擁有乙個程式設計師男朋友,通過什麼方式能找到啊?

按照我的理解程式設計師只是一種職業,什麼性格的人都有,千人千面。據我所知,某些為程式設計師脫單服務的弓眾號。還有某些社群,都有挺多程式設計師的。只要不要像我一樣膽小不行動,不然真的挺多機會的。 夢星河 去做產品經理或者測試工程師,這兩個崗位直接接觸大量程式猿。特別產品經理一般來說不要求專業,成功的機...