我有一个数据库字段,它需要在Web界面中存储来自WYSIWYG输入框的文本和HTML标记。
文本最多可以有2000个字符,但HTML标签可以根据访问者是否使用所见即所得的特性以及使用的程度而有所不同。
我正在使用ms sql server,但我觉得这个问题与数据库无关。
对于这个字段,我是否应该像下面这样使用varchar(2000个字符加上2000个字符作为可能的html标记)。但根据用户的不同,html标记可能超过2000个字符?或者应该使用文本或lob数据类型(可以存储未加密的数据)?
考虑到将有数亿条记录和高数据库保存和查询事务,什么是实用和平衡的设计(性能、存储等)?
非常感谢!
最佳答案
您应该使用varchar(MAX)
/nvarchar(MAX)
,它是text
/ntext
数据类型的继承者,因为它允许任意长度和does not produce additional overhead。限制(n)个varchar的大小并不能节省空间。
就我个人而言,我推荐女巫而不是女巫。它们占用了a bit more space,但一旦用户开始输入非英语字符,您就会给自己带来很多麻烦。
注意,不能在(n)varchar(max)字段上创建索引。