用id由於是int類型,比字符串類型的性能高得多,特別是在大數據量的狀況下。在數據庫的設計上,除非很是高級的系統,纔會考慮int快和慢的問題。數據庫
若是數據量比較大,有的狀況下須要考慮儘可能減小錶鏈接的操做網絡
這種狀況咱們通常叫「邏輯id」和「物理id」分佈式
id------做爲數據的物理id標識性能
userid---------是數據的邏輯id大數據
通常來講中小型項目一般使用物理id作爲標識,而大型項目每每使用邏輯id作標識。優化
區別,大型項目由於數據量大,結構複雜,網絡硬件配置複雜,網絡結構複雜,存儲介質複雜。他們一般採用分佈式的數據存儲介質和分佈式的網絡環境,而在分庫,分表的狀況下,數據庫的物理id就不可預覽了,因此更多狀況下使用邏輯id做爲標識設計
好比:銀行系統一般使用不與數據庫id關聯的,帳戶號作標識。而電信系統則由於硬件環境的限定使用電話號碼作標識(電信系統一般的前置機只認主叫號,被叫號這種邏輯標識,而不認你本身的數據庫id)字符串
爲了提升性能能夠做數據冗餘。例如:字段比較多,數據量又很大,你能夠把Name字段上加入包含性列(不過這會佔用一點額外的存儲空間了)
可能修改的帳號字段定義爲loginid,用戶表使用id,userid,做爲標識。 UserName修改的機會要大不少,特別是企業應用,客戶若是要求改一下用戶名,若是用戶名是外鍵那影響就大了.效率