3 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)在線(xiàn)文檔,有64K行限制,您可以使用以下方法計(jì)算行大小:
row length = 1
+ (sum of column lengths)
+ (number of NULL columns + delete_flag + 7)/8
+ (number of variable-length columns)
您需要記住,列長(zhǎng)度不是它們大小的一對(duì)一映射。例如,CHAR(10) CHARACTER SET utf8十個(gè)字符中的每一個(gè)都需要三個(gè)字節(jié),因?yàn)樘囟ǖ木幋a必須考慮每個(gè)字符的三字節(jié)屬性u(píng)tf8(即MySQL的utf8編碼而不是“真正的”UTF-8,最多可以有四個(gè)字節(jié))。
但是,如果行大小接近64K,則可能需要檢查數(shù)據(jù)庫(kù)的架構(gòu)。這是一個(gè)罕見(jiàn)的表,需要在正確設(shè)置(3NF)數(shù)據(jù)庫(kù)中這么寬 - 這是可能的,只是不常見(jiàn)。
如果您想使用更多,可以使用BLOB或TEXT類(lèi)型。這些不計(jì)入行的64K限制(除了小的管理占用空間),但您需要了解其使用的其他問(wèn)題,例如無(wú)法使用超過(guò)一定數(shù)量的整個(gè)文本塊進(jìn)行排序字符(雖然可以向上配置),強(qiáng)制臨時(shí)表在磁盤(pán)上而不是在內(nèi)存中,或者必須配置客戶(hù)端和服務(wù)器通信緩沖區(qū)以有效地處理大小。
允許的尺寸為:
TINYTEXT 255 (+1 byte overhead)
TEXT 64K - 1 (+2 bytes overhead)
MEDIUMTEXT 16M - 1 (+3 bytes overhead)
LONGTEXT 4G - 1 (+4 bytes overhead)
你仍然有字節(jié)/字符不匹配(這樣一MEDIUMTEXT utf8列可以“只”存儲(chǔ)大約五十萬(wàn)個(gè)字符,(16M-1)/3 = 5,592,405)但它仍然會(huì)大大擴(kuò)展你的范圍。

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
varchar的最大長(zhǎng)度取決于MySQL中的最大行大小,即64KB(不包括BLOB):
VARCHAR(65535)但是,請(qǐng)注意,如果使用多字節(jié)字符集,則限制較低:
VARCHAR(21844)CHARACTER SET utf8
添加回答
舉報(bào)