我有以下db表:任何優勢,以保持一個自動遞增的字段除了全局唯一標識符
`users`
- guid (UUID)
- username
- creation_data
有沒有在這裏飼養的自動遞增的字段,以及什麼優勢?
`users`
- id (autoincrement)
- guid
- username
- creation_date
也許它會使表的外鍵更高效或別的東西?保留兩個字段(id & guid)vs只有一個(guid)會有什麼優點和缺點?
我有以下db表:任何優勢,以保持一個自動遞增的字段除了全局唯一標識符
`users`
- guid (UUID)
- username
- creation_data
有沒有在這裏飼養的自動遞增的字段,以及什麼優勢?
`users`
- id (autoincrement)
- guid
- username
- creation_date
也許它會使表的外鍵更高效或別的東西?保留兩個字段(id & guid)vs只有一個(guid)會有什麼優點和缺點?
我的建議是擺脫UUID字段,並只使用:
`users`
- id (autoincrement)
- username
- creation_date
這樣,所有的外鍵和索引將工作時間更快,因爲所有的計算和比較將完成使用整數,而不是字符串。
作爲一個粗略的估計,你可以假設整數比較需要單個CPU週期,比較字符串和20個字符需要20個週期。
我的猜測是* guid *在這個應用中是必須的(因爲,其他猜測,'id> = guid'並且不必等於) – 2014-11-22 08:24:08
@Anton Milkov,不需要比較字符串。 UUID表示爲128位,而不是20個字符串。它確實比整數大,但性能損失可以忽略不計 – Maxim 2014-11-22 15:10:50
添加自動遞增ID:
優勢
缺點
是的,它會使外鍵更有效。 – 2014-11-22 02:33:22