2014-11-22 43 views
3

我有以下db表:任何優勢,以保持一個自動遞增的字段除了全局唯一標識符

`users` 
- guid (UUID) 
- username 
- creation_data 

有沒有在這裏飼養的自動遞增的字段,以及什麼優勢?

`users` 
- id (autoincrement) 
- guid 
- username 
- creation_date 

也許它會使表的外鍵更高效或別的東西?保留兩個字段(id & guid)vs只有一個(guid)會有什麼優點和缺點?

+2

是的,它會使外鍵更有效。 – 2014-11-22 02:33:22

回答

0

我的建議是擺脫UUID字段,並只使用:

`users` 
- id (autoincrement) 
- username 
- creation_date 

這樣,所有的外鍵和索引將工作時間更快,因爲所有的計算和比較將完成使用整數,而不是字符串。

作爲一個粗略的估計,你可以假設整數比較需要單個CPU週期,比較字符串和20個字符需要20個週期。

+0

我的猜測是* guid *在這個應用中是必須的(因爲,其他猜測,'id> = guid'並且不必等於) – 2014-11-22 08:24:08

+0

@Anton Milkov,不需要比較字符串。 UUID表示爲128位,而不是20個字符串。它確實比整數大,但性能損失可以忽略不計 – Maxim 2014-11-22 15:10:50