2009年6月3日 星期三

資料庫的文字型態差異

以前都是習慣使用 MySQL,因此接觸 SQL Server 的時間不算長,

可是卻常常分不清 varchar 、char 與開頭多了一個 n 在的差異在哪?

雖然之前有看過不同之處,但是常常忘記...所以決定寫一篇把這件事記起來。

varchar 與 char 的差異在於資料庫儲存資料時是使用固定長度儲存或是變動長度,

例如 varchar(10) 與 char(10) 雖然都是宣告成 10 個字元,但是在儲存的資料假設只有八個字

對於資料庫來說 varchar 型別只會佔用 8 bytes,而 char 型別卻還是佔用10 bytes。

那為什麼要分成這兩者型態呢?有什麼差異?

如果資料是經常更新的時候,那麼會建議使用 char,因為它固定長度,

對於資料庫來說不用再找空間配置會比較快,反之 varchar 則較慢 (var其實就是變動的意思)。

那多了一個 n 在開頭又有什麼差別呢?主要這個 n 在定義欄位的內容每個字是以2 bytes儲存,

正確來說應該是使用 unicode 的編碼儲存。

那這樣 nvarchar(10) 與 varchar(10)的差異又在哪裡呢?

在上面有提到varchar會動態存10個字,而10個字只會佔用10 bytes,但是nvarchar卻會佔用20 bytes,

假設我們儲存中文字時,一個中文字會佔掉 varchar 兩個位置,也就是說varchar(10)最多只能存5個中文字,

但是nvarchar(10) 則是存10個中文字。

沒有留言:

張貼留言