本文來源於翁舒航的博客,點擊即可跳轉原文觀看!!!(被轉載或者拷貝走的內容可能缺失圖片、視頻等原文的內容)
若網站將鏈接屏蔽,可直接拷貝原文鏈接到地址欄跳轉觀看,原文鏈接:https://www.cnblogs.com/wengshuhang/p/9933818.html
我們平常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、第三、沒有限定住字段長度可能會產生垃圾數據------這也有可能產生一種后果,被惡意攻擊,存入了超大的數據來占滿磁盤空間。 long long after ps: 數據庫中 定義 varchar長度其實一般都是用來限制字段邏輯的長度的,多長對數據庫真的沒啥破影響, 另外varchar(256+) 會比 varchar(255-) 多占用一字節空間計算長度的 因為 2^8 = 256(0-255),超出255,就得用兩位去計算長度了 這時候能標識的字符串長度為 256 *256 = 65536 了。 不過數據庫存儲 高於 8000的字符串一般都用 text形式的吧 。 如果定義個 256長度的 還不如直接定義255 畢竟能輸入的長度最大范圍都是 254,用256就白白浪費一字節空間。