天天看點

MySql中varchar和varchar的差別

看了新公司的資料庫設計,有些問題思考了一下,寫這篇文章也就記錄這個問題的思考過程。

首先從占用空間進行比較,varchar(10) 聲明10個位元組,資料儲存時額外一個位元組的長度字首;varchar(1000)聲明1000個位元組,如果資料長度大于255,長度字首是兩個位元組。而實際Varchar資料類型是根據實際的需要來配置設定長度的。有問題的參考這篇文章,挺有意思的一個實驗,關于varchar的思考。

那麼,既然主要關心磁盤占用沒有問題,哪裡可能出現問題

意思就是說對于VARCHAR資料類型來說,硬碟上的存儲空間雖然都是根據實際字元長度來配置設定存儲空間的,但是對于記憶體來說,則不是。其時使用固定大小的記憶體塊來儲存值。簡單的說,就是使用字元類型中定義的長度,即1000個字元空間,因為其會轉換成CHAR。顯然,這對于排序或者臨時表(這些内容都需要通過記憶體來實作)作業會産生比較大的不利影響。解釋可以參見這裡。

(https://stackoverflow.com/questions/1151667/what-are-the-optimum-varchar-sizes-for-mysql)。

是以我們在做庫表設計的時候,一些大字段參數進行業務拆表,還有就是資料庫設計時候varchar(n)這個字段要合理,不能太大。

這邊再貼一下這個過程中發現的一篇有趣的文章,是關于char和varchar的

http://tech.it168.com/a2011/0426/1183/000001183173.shtml

mysql 存儲 代碼 類型