Database-Design
像序列號這樣的數字標識符是否應該儲存為整數?
我們的許多數據庫都將數字跟踪程式碼(如序列號)儲存為整數。這些程式碼幾乎不可能每次都獲得字母字元,但它似乎仍然是不正確的數據類型,因為您永遠不會對它們執行數學運算。
對於這些類型的標識符,什麼是合適的數據類型?
使用
INT
over say aCHAR
or的最大優勢之一VARCHAR(10)
是尺寸。該INT
值將是 4 個字節,該CHAR/VARCHAR
值將是 10 個字節。NCHAR/NVARCHAR
在 20 字節時會更大。由於這個INT
值的索引比對應的索引更小,因此更快,有時甚至相當快CHAR/VARCHAR
。此外,您的行大小更小,每行需要更少的讀取。當然,這一切都與實際的空間儲存無關。 Thomas LaRock"right sizing"
已就您的數據類型 撰寫了數篇部落格。這種數據類型是否使我的列看起來很胖以及如何:例如,正確調整緩衝池中目前數據類型的大小。當然,所有這些都假設您實際上不會在跟踪程式碼中使用字元。如果您是,那麼您當然別無選擇,只能使用
CHAR\VARCHAR
.