1. 程式人生 > 其它 >MySql中varchar(10)和varchar(100)的區別和優缺點

MySql中varchar(10)和varchar(100)的區別和優缺點

許多使用MySQL的同學都會使用到varchar這個資料型別。初學者剛開始學習varchar時,一定記得varchar是個變長的型別這個知識點,所以很多初學者在設計表時,就會把varchar(X)的長度設定的非常長,目的也是為了保證以後有更長的資料儲存時,能更好的相容。

於是本來varchar(10)就可以滿足當前的儲存的長度需求了,改成了varchar(100)。

那麼疑問來了:

既然是變長型別,varchar(10)和varchar(100)有什麼區別?

先舉個例子:如果要儲存'hello12345'這個字串,使用varchar(10)和varchar(100)儲存,佔用磁碟空間是一樣的麼?

答案是:佔用磁碟的儲存空間是一樣的。

既然儲存時磁碟佔用空間一樣,還有什麼其他的區別嗎?

雖然使用varchar(100)和varchar(10)儲存'hello12345'字串佔用的磁碟空間一樣,但是消耗的記憶體不一樣,更長的列消耗的記憶體會更多。因為MySQL通常會分配固定大小的記憶體塊來儲存內部值。尤其是使用臨時表進行排序會操作時,會消耗更多的記憶體。在使用磁碟進行排序時,也是一樣。

所以此時varchar(100) 會消耗更多的記憶體。

varchar(10)和varchar(100)的優劣勢是什麼?

因為涉及到檔案排序或者基於磁碟的臨時表時,更長的列會消耗更多的記憶體,所以在使用使用時,我們不能太過浪費記憶體空間,還是需要評估實際使用的長度來設定字元的長度。推薦冗餘10%的長度(因業務而異)。

所使用varchar(10)會更加節約記憶體空間,但是實際業務中字元長度一旦超過10就需要更改表結構,在表資料量特別大時,不易拓展。

而這時使用更長的列:varchar(100)無需更改表結構,業務拓展性更好。