2013-04-09 43 views
2

我目前有在我的課有關數據類型在MySQL charint的討論。 我們有8個電話號碼。但是,我們找不到每個人的優點和缺點。MySQL的字符與INT

我們應該使用char型還是int型,爲什麼?

回答

3

如果你有一個固定的大小,那麼你可以使用char(8)-> 8B,mysql的固定大小字段的工作速度更快,但如果你選擇int-> 4B,你將節省空間,如果你將有一個索引字段它會更快,然後字符。

你可以做一個簡單的基準測試的寫入速度和讀取使用CHAR(8)和int

使用可變長度類型像爲varchar或varbinary沒有點,如果你有一個固定大小,因爲性能將會降低

1

取決於你要代表的電話號碼,你需要區號,國家代碼和類似的東西怎麼了,你想將其保存爲一列或者你想它分裂?

就個人而言,我會選擇代表區號,國家代碼和電話號碼3列與數據類型int,因爲這將使它更容易找到所有的電話號碼在一個區域,依此類推。但是,如果它的唯一目的就是要像一個字符串值,該字符就足夠了,但是

+0

謝謝你的答案。但是,我們只需要存儲每行的8位數字。什麼會更好地保存8個數字,char或int? – 2013-04-09 07:49:35

+0

VARCHAR會做的工作,因爲你將不能夠存儲前導零與一個int值。 – ArchiFloyd 2013-04-09 07:52:17

+0

兩個'char','varchar'和'int'會做這項工作。在丹麥,電話號碼不能有一個前導零。我只需要知道哪一個會更好使用,這是爲什麼 – 2013-04-09 07:57:51

0

我開始使用VARCHAR存儲手機,我會考慮使用varchar相反,如果你有電話號碼的幾個countries.`數字,因爲它爲您提供更多不同國家的格式範圍。存儲便宜。

1

不完全瞭解美國,但在歐洲,國家接入碼是領先的0,國際接入碼是領先的00或+。所以這是一個使用INT,因爲領先的0將丟失。此外,您還擁有包含姓名的電話號碼,即使這些姓名可以轉換爲數字,但將其保留爲姓名可能也不錯。這是使用INT的第二個約束。最後一個con是你也可以擁有分機號碼等等。所有這些都歸功於VARCHAR。