Mysql 将列作为文本的性能惩罚?

Mysql 将列作为文本的性能惩罚?,mysql,database-design,text,varchar,Mysql,Database Design,Text,Varchar,我有一个内容管理系统,用户可以在其中动态创建html表单。我已经准备好了所有的桌子。但有一件事困扰着我,那就是输入值的文本大小 有些表单有文本区域,有些文本区域包含大量数据。但是表单上也只有一些简单的文本字段,其中只包含一些数据字符 用于保存值的数据库表如下所示: 形成价值观 id | form_id | fk_element_id | value 因此,在这种情况下,值列将保存特定字段类型的输入数据。因此,在文本字段的情况下,这将只有几个字符。但对于文本区域,这可能是大量数据 这意味着值列必

我有一个内容管理系统,用户可以在其中动态创建html表单。我已经准备好了所有的桌子。但有一件事困扰着我,那就是输入值的文本大小

有些表单有文本区域,有些文本区域包含大量数据。但是表单上也只有一些简单的文本字段,其中只包含一些数据字符

用于保存值的数据库表如下所示:

形成价值观

id | form_id | fk_element_id | value
因此,在这种情况下,
列将保存特定字段类型的输入数据。因此,在文本字段的情况下,这将只有几个字符。但对于文本区域,这可能是大量数据

这意味着
列必须至少为
TEXT
类型。即使大多数类型不会超过255个字符
(最大VARCHAR)

现在我不确定这是否是正确的方法。当我查询表时,这会导致性能下降吗?我是否必须将textarea数据保存在另一个表中。。?或者类似的


或者我可以简单地将
列更改为
文本
类型而没有任何问题吗?

VARCHAR的最大长度是255MySQL 5.0.3之前,从MySQL 5.0.3开始,最大长度是65535,这是最大行大小,以便最大值在行中的所有字段之间共享


请参见

我个人会使用
NVARCHAR(MAX)
类型,因为您可以在SQL Server集群中存储多达2GB的文本。我不知道MySQL,但我知道在SQL Server中,您不能像搜索
文本那样执行
column@Qpirate不幸的是,MySQL没有NVARCHAR类型。当您要存储超过255个字符时,只需键入
VARCHAR
TEXT
。事实上,对
文本
列的查询是我遇到的另一个问题。我想我不需要在短时间内做像
这样的
。但是我想提前解决尽可能多的问题。在MySQL 5.0.3之前,VARCHAR的最大长度是255,从MySQL 5.0.3开始,最大长度是65535,这是最大行大小,因此最大值在行中的所有字段之间共享。看@Nelson哇,谢谢。我不知道。这实际上解决了我的问题。那我就用一个
VARCHAR
。它看起来像一个
VARCHAR(3000)
(3000个字符)utf8编码的列,最多需要9000字节。如果我理解正确,最大值是65535字节。我可能需要加倍,以确保它可以容纳足够多的字符。你能不能把它作为一个答案贴出来,这样我以后就可以接受了?