2014-01-31 44 views
1

What is the MySQL VARCHAR max size?文本在Mysql中有行限制嗎?

我已經在stackoverflow上搜索了關於varchar vs text的內容,並研究了文檔。

Iam不確定我是否理解正確的方式,但讓我問你這個問題。我有Mysql版本5.5.34和是的最大varchar大小是65535字節和我的網站上的文本內容不能超過600個字符,我寧願使用varchar(600)而不是Text

由於varchar與表格內聯存儲,速度更快,當我閱讀所有問題的答案時。

rajukoyilandy回答

VARCHAR具有64K行限制

paxdiablo答案

,如果你的行大小已接近64K,您可能要檢查你的數據庫的模式。這是一個罕見的表格,需要在一個正確設置的(3NF)數據庫中有這麼大的表 - 這可能,但不是很常見。

如果您想使用更多,可以使用BLOB或TEXT類型。這些不計入該行的64K限制

所以我決定用Text

http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

當我看到這個文檔的最頂端,它說

Every table (regardless of storage engine) has maximum row size of 65,535 bytes. 
Storage engines may place additional constraints on this limit, 
reducing the effective maximum row size 

我的問題是,所以無論你使用TextVarchar,行限制是65kb?或者如果您使用Text,則沒有行限制?任何幫助是極大的讚賞。

回答

0

http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

BLOB和TEXT列從一數到四個加八個字節每個 向行大小限制,因爲它們的內容是從該行的其餘部分分開 存儲。

所以,是的,不管你使用的行限制爲65KB,但由於BLOB和TEXT類型分別存儲的內容長度不計入行大小算,剛剛起步one to four plus eight字節做。

這就是爲什麼您可以使用LONGBLOB LONGTEXT來存儲大文件,並且仍然能夠在表格中擁有不止一個LONGBLOB/LONGTEXT列的原因。

至於哪個更好VARCHAR(600)vs TEXT,用VARCHAR你會佔用每列1802字節,所以當涉及到行限制時你仍然有很多空間可以使用。但是爲了提高性能,您必須執行基準測試,因爲this comment points out內聯存儲在查詢中經常使用時速度更快。

0

行大小限制適用於存儲行本身所需的空間量,這與存儲行中數據所需的空間量不同。從您鏈接到的頁面:

BLOB和TEXT列從一到四加八個字節,每個都朝向行大小限制,因爲它們的內容與行的其餘部分分開存儲。

這就是爲什麼您可以將大量數據存儲在BLOB或TEXT字段中而不超出行大小限制的原因。