在mysql中使用varchar或text作为动态字段?

时间:2011-01-28 14:02:54

标签: mysql text varchar

我正在构建一个将在字段中接收不同值的表,想一下“value”字段可以是数字,小字符串或大文本等的日志表。
所以我很奇怪我是否应该将“值”字段创建为Text或创建两个字段,一个用于小输入,如日期,数字和一些字符串,另一个仅用于文本输入。

所以,我的问题是: 这个“值”字段是否应该是一个Varchar以及其他一些“value2”作为Text或创建一个字段mysql将对此进行相应的文本处理?

我担心只创建一个Text字段对于性能来说可能是件坏事。

编辑:数字,日期时间等将在插入前转换为字符串,这不是重点

谢谢,

3 个答案:

答案 0 :(得分:4)

你知道最大输入量有多大吗?如果你施加一个限制,或者知道最大输入量有多大,那么你可以使用varchar(在版本< 5.0.3中为255个字符,在版本中为65,535> = 5.0.3)。否则,你可能最好使用Text,因为它拥有更多(65,535 * 2 ^ 16-1)。

作为替代方案,如果用户正在创建已有表格的内容(例如向日历添加事件),您可以在表格上放置“is_approved”列,仅显示已批准的列,或搜索所有内容以进行检查重复。

http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html

答案 1 :(得分:1)

如果存储数据的长度有限,请使用varchar()(因为MySQL 5.0.3 varchar最大长度可以达到65,535)

如果没有具体限制,则使用“文本”字段类型。

答案 2 :(得分:0)

varchar字段可以处理您提到的不同输入,但是作为字符串,而不是整数或日期时间。