1. 程式人生 > >varchar(n)跟varchar(max)的區別

varchar(n)跟varchar(max)的區別

我們平常mysql資料庫一些定長的欄位用char,
一些不定長的資料用varchar,事實上,一般varchar的欄位查詢速度都比char高。
但是有一個問題,既然varchar的長度是根據實際資料的長度進行儲存的,那為什麼我們不能一直用varchar(8000)或者varchar(max)呢,總結了以下幾點:
1、第一,資料庫執行時,欄位佔據了記憶體空間以及磁碟空間,磁碟中是根據資料的實際長度(n:n+1, max:n*2)進行儲存的,而varchar(n)則佔據著記憶體的n長度位元組的空間,max = 2^32 -1 = 65535
2、第二、拋開空間不說,欄位長度有利於讓我們開發者從欄位名意義上理解分析欄位的意義以及作用,試想一下一整個資料庫都是varchar(8000),開發看資料庫時候不會暈嗎,看著這些欄位都不知道有什麼區別,只是欄位名不一樣,也不知道作用(當然有文件,但你也不可能記住所有欄位意思或者說你是剛開始理解別人的專案),不會害怕寫錯資料啥的嗎。
3、第三、沒有限定住欄位長度可能會產生垃圾資料------這也有可能產生一種後果,被惡意攻擊,存入了超大的資料來佔滿磁碟空間。