mysql 數(shù)據(jù)庫 查詢,MySQL數(shù)據(jù)庫中如何選擇VARCHAR和CHAR類型?
首先明確的是,char的長度是不可變的,而varchar的長度是可變的,也就是說,定義一個(gè)char[10]和varchar[10],如果存進(jìn)去的是‘csdn’,那么char所占的長度依然為10,除了字符‘csdn’外,后面跟六個(gè)空格,而varchar就立馬把長度變?yōu)?了,取數(shù)據(jù)的時(shí)候,char類型的要用trim()去掉多余的空格,而varchar是不需要的,盡管如此,char的存取數(shù)度還是要比varchar要快得多,因?yàn)槠溟L度固定,方便程序的存儲(chǔ)與查找;但是char也為此付出的是空間的代價(jià),因?yàn)槠溟L度固定,所以難免會(huì)有多余的空格占位符占據(jù)空間,可謂是以空間換取時(shí)間效率,而varchar是以空間效率為首位的。再者,char的存儲(chǔ)方式是,對(duì)英文字符(ASCII)占用1個(gè)字節(jié),對(duì)一個(gè)漢字占用兩個(gè)字節(jié);而varchar的存儲(chǔ)方式是,對(duì)每個(gè)英文字符占用2個(gè)字節(jié),漢字也占用2個(gè)字節(jié),兩者的存儲(chǔ)數(shù)據(jù)都非unicode的字符數(shù)據(jù)。