2010-10-30 134 views
4

我有許多列只需要存儲一些值(例如0,1,2,3)。我應該爲這種情況選擇哪種數據類型?我覺得我應該選擇像ENUM('0','1','2')這樣的東西。 int會更好嗎(儘管限制較少)?我應該考慮其他東西(比如tinyint)嗎?MySQL數據類型:int與enum

編輯:

其實,我應該考慮什麼一般建議在數據類型決定何時?

+0

一般建議?總是選擇合適的人:) – 2010-10-30 08:51:53

+0

你的意思是右邊那個? :P – Mchl 2010-10-30 08:59:28

回答

5

如果你想限制它到這3個值,那麼確實ENUM可能是最好的。

但是,如果將來可能需要更多的值,那麼TINYINT UNSIGNED可能是更好的解決方案。

+0

是的。即使有數百萬條記錄,通過在INT/TINYINT上使用ENUM保存的數據量也很小。通常,最好使用後者 – 2010-10-30 08:52:45

+0

爲什麼ENUM比int或tinyint更好?是否因爲可以存儲數據的限制(即更好的數據完整性)?它與存儲要求有什麼關係?還是速度?或者是其他東西? – StackOverflowNewbie 2010-10-30 08:53:13

+0

枚舉值被存儲爲索引並且需要2個字節(smallint unsigned),因此最多可以有65,535枚枚舉元素。 – 2010-10-30 08:55:20

1

建議使用enum和fixed set。如果你想擴展,那麼它應該避免的是'改變'基本的模式改變。

找到更好的主意約choosing datatype

,並得到comparison of enum與數據類型