2011-03-10 69 views
0

可以使用INT作爲MySQL中索引的數據類型。我不確定這是否是最好的方式,因爲我完全期望這張桌子獲得很多條目,最終會「溢出」我懷疑像Facebook使用INT作爲其索引的東西作爲wallpost表或其他將是高流量/獲取大量條目的其他內容。什麼數據類型用於MySQL唯一鍵/索引

有什麼想法?

+0

索引加速數據檢索;我想你的意思是說「主鍵」。 – 2011-03-10 06:19:01

回答

2

使用INT(11) UNSIGNED ZEROFILL NOT NULL

+0

INT上的前綴隻影響可顯示的字符,而不影響大小。 – 2011-03-10 06:19:48

+0

爲什麼這是最好的選擇?這仍然只是一個有限的數字。 – john 2011-03-10 06:22:47

+0

@john會有多少行?無符號的INT範圍是0到4294967295 ....是不夠的? – diEcho 2011-03-10 06:24:31

1

int可以上升到超過2 十億(兩倍多,如果無符號)。如果你希望你的表有更多的行,你可以使用一個BIGINT(這個無符號長達18,446,744,073,709,551,615,—可能比Facebook需要的多)。

1

一般來說,你有兩個選擇:

A「natural key」反映您正在使用的數據的真實性。 例如,電話號碼可能是呼叫列表的有效主鍵,但它完全不適用於例如醫療保健受益人列表,因爲許多人可能在家中共享相同的電話號碼。請注意,一個自然鍵可能由多個字段組成。例如,品牌,型號和年份的組合可能是汽車模型列表的關鍵。

另一方面,'surrogate key'只是您分配給某一行的任意值。如果你走這條路線,我建議使用GUID(MySql中的UUID)。 The best way that I know來表示那些在MySQL中有一個char(36)列。 GUID永遠是唯一的,可以無限使用。

如果你堅持使用一個普通的舊號碼,那麼INT可能是好的,或者你可以使用BIGINT來確定。

BIGINT UNSIGNED ZEROFILL