許多使用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)無需更改表結構,業務拓展性更好,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444457.html
標籤:其他
