2011年3月25日 星期五

char 與 varchar 欄位型態考量

參考來源
--
不得不讚揚一下該blog作者,篇篇都精闢

char 與 varchar 的空間大小是以後面參數來表示欄位的大小,不同的地方在於 varchar 是以動態的方式儲存。例如

char(10) 與 varchar(10) 再存放 hello 字串時,char 是佔用10 Bytes的空間,而 varchar 只佔用 5Bytes。

註:char 會佔用 10Bytes 是因為他會自動用空白填滿整個儲存空間,所以真正存在該格的內容是(hello_____),包含了5個空格。

看到這大家肯定會認為宣告為 varchar 是較佳的方式,而實際上還需要考慮存取效率的問題。

假設一個欄位 username 宣告 char(10) 與 varchar(10),char 的情況是DB每次都固定抓取 10 Bytes的大小,不需要判斷欄位內容的長度。反之 varchar 就必須每個欄位值都得用類似pointer 或 linking-list的方式抓取真正的存放內容,如此一來便會耗用系統CPU的運算時間。簡單歸類

char 固定大小浪費空間,所需計算時間少。

varchar 不固定長度,必須要花費較多的CPU計算時間。

沒有留言:

張貼留言