3 回答

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

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