2014-05-09 33 views
3

爲了便於閱讀,我希望將變量存儲爲諸如「in」,「out」,「auto」之類的varchar,而不是像「0」,「 1「,」2「。有沒有什麼原因,我不應該把它作爲一個varchar存儲?MYSQL:varchar vs int用於存儲變量

我問的原因是我聽說int更快,但是在這種情況下適用,還是速度差異會很小以至於可以忽略不計?

我對MYSQL很新穎,所以請讓我知道如果您需要更多信息,我已經搜索了類似的問題/答案,但沒有找到任何答案我的問題。

+1

你也可以使用枚舉。許多人會認爲smallint 1是理想的,但除非你打算遷移到其他數據庫,否則你應該使用enum或varchar。不太可能你會注意到一個延遲 –

+1

我想你自己已經回答了,至於它是什麼時候有所作爲。這取決於你的數據庫有多大 – meda

+0

只是在鐘聲中,速度差可能不會註冊。這個數值可以忽略不計,因爲它可能小於CPU的量子長度,所以它不會從其他進程(包括自身)中取出循環。 –

回答

6

有一個簡單的經驗法則:如果您需要進行算術或索引,請使用數字類型(如果不使用字符類型)。

根據經驗規則通常取決於有關拇指的大小和角度,這裏是我的意思是:

  • (經典例子#1)電話號碼:無算術有道理,使用VARCHAR並獲得+()額外免費收集
  • (經典例子#2)郵政編碼:同樣沒有算術,我們的英國朋友住在像LO7SWF將gratefull,如果使用VARCHAR
  • 其中一組,例如0-9:如果這些是查找表的PK(應該是),則使用int。如果他們的意思是DB之外考慮使用VARCHAR(和微笑,如果從嚴格-數字鍵盤給那些硬件廠商的升級也使用#*

雖然這是完全正確,一個索引過一個僅含數字內容11個數字的VARCHAR字段比INT(11)稍慢,但我還沒有看到真實世界的數據庫,在這裏有明顯的區別。