文字还是varchar?

时间:2009-10-31 23:13:12

标签: sql mysql types

我有两列包含文本,一行最多150个字符长,另一个最多700个字符长,
我的问题是,我应该使用两种varchar类型还是应该使用700 chars long列的文本?为什么?

谢谢,

4 个答案:

答案 0 :(得分:10)

MySQL中的varchar数据类型< 5.0.3无法保存长度超过255个字符的数据。在MySQL> = 5.0.3中,它最多有65,535个字符。

因此,它取决于您要定位的平台以及您的可部署性要求。如果您想确保它适用于低于5.0.3的MySQL版本,请使用较长列的text类型数据字段

答案 1 :(得分:2)

一个重要的考虑因素是,使用varchar,数据库将数据直接存储在表中,并且使用文本,数据库存储指向存储数据的单独表空间的指针。所以,除非你遇到行长度的限制(MySQL中为64K,DB2中为4-32K,SQL Server 2000中为8K),我通常会使用varchar。

答案 2 :(得分:0)

不确定mysql,但在MS SQL中,如果您希望能够对字段中的值进行任何类型的比较,那么您绝对应该使用VARCHAR来处理8000字符以下的任何内容。例如,使用VARCHAR可以实现这一点:

select your_column from your_table 
where your_column like '%dogs%'

但没有TEXT字段。

可以找到有关mysql 5.4中TEXT字段的更多信息here,可以找到有关VARCHAR字段的更多信息here

答案 3 :(得分:0)

我会根据输入的数据类型选择该选项。例如,如果它是(可能)超长用户名和传记,我会做varchar和文本。当然,你将bio限制为700个字符,但是如果你在路上添加HTML格式,保留700个字符串限制但允许HTML标记进行格式化会怎么样?

Twitter可能会使用文本作为推文,因为可以更快地将元数据添加到帖子(例如url href和@user PK)以缓存其他数据,而不是每次渲染时对其进行计算。