數據庫char與varchar區別

char是固定長度的,而varchar會根據具體的長度來使用存儲空間。比如char(255)和varchar(255),在存儲字符串"hello world"的時候,char會用一塊255的空間放那個11個字符,而varchar就不會用255個,他先計算長度後只用11個再加上計算的到字符串長度信息,一般1-2個byte來,這樣varchar在存儲不確定長度的時候會大大減少存儲空間。 

如此看來varchar比char聰明多了,那char有用武之地嗎?還是很不少優勢的。 

一,存儲很短的信息,比如門牌號碼101,201……這樣很短的信息應該用char,因爲varchar還要佔個byte用於存儲信息長度,本來打算節約存儲的現在得不償失。 

二,固定長度的。比如使用uuid作爲主鍵,那用char應該更合適。因爲他固定長度,varchar動態根據長度的特性就消失了,而且還要佔個長度信息。 

三,十分頻繁改變的column。因爲varchar每次存儲都要有額外的計算,得到長度等工作,如果一個非常頻繁改變的,那就要有很多的精力用於計算,而這些對於char來說是不需要的。 


還有一個關於varchar的問題是,varchar他既然可以自動適應存儲空間,那我varchar(8)和varchar(255)存儲應該都是一樣的,那每次表設計的時候往大的方向去好了,免得以後不夠用麻煩。這個思路對嗎?答案是否定的。mysql會把表信息放到內存中(查詢第一次後,就緩存住了,linux下很明顯,但windows下似乎沒有,不知道爲啥),這時內存的申請是按照固定長度來的,如果varchar很大就會有問題。所以還是應該按需索取。 

總結:仔細看DZ的數據表,定長的字段基本還都是用char....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章