我有两列包含文本,一行最多150个字符长,另一个最多700个字符长,
我的问题是,我应该使用两种varchar类型还是应该使用700 chars long列的文本?为什么?
谢谢,
答案 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字段。
答案 3 :(得分:0)
我会根据输入的数据类型选择该选项。例如,如果它是(可能)超长用户名和传记,我会做varchar和文本。当然,你将bio限制为700个字符,但是如果你在路上添加HTML格式,保留700个字符串限制但允许HTML标记进行格式化会怎么样?
Twitter可能会使用文本作为推文,因为可以更快地将元数据添加到帖子(例如url href和@user PK)以缓存其他数据,而不是每次渲染时对其进行计算。