1. 程式人生 > >SQL中char、varchar、text區別

SQL中char、varchar、text區別

Char為定長,varchar,text為變長、

1、CHAR。CHAR儲存定長資料很方便,CHAR欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間。

2、VARCHAR。儲存變長資料,但儲存效率沒有CHAR高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR型別的實際長度是它的

值的實際長度+1。為什麼“+1”呢?這一個位元組用於儲存實際使用了多大的長度。

從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

3、TEXT。text儲存可變長度的非Unicode資料,最大長度為2^31-1(2,147,483,647)個字元。

注意一點的,Char,Varchar不像數值型別,有系統預設長度,所以必須在括號裡定義長度,可以有預設值

text不可以寫預設值,後面如果指定長度,不會報錯誤,但是這個長度是不起作用的,意思就是你插入資料的時候,超過你指定的長度還是可以正常插入(嚴格模式下沒有測試)

總結:char會造成空間浪費,但是有速度優勢;而varchar節省了空間,但是速度就不如char。

(1)經常變化的欄位用varchar

(2)知道固定長度的用char

(3)儘量用varchar

(4)超過255位元組的只能用varchar或者text

(5)能用varchar的地方不用text