我有一个数据库字段,需要存储 Web 界面中所见即所得输入框中的文本和 HTML 标记。
文本最多可包含 2000 个字符,但 HTML 标记可能会有所不同,具体取决于访问者是否使用所见即所得功能以及使用该功能的程度。
我正在使用 MS SQL 服务器,但我觉得问题与数据库无关。
对于此字段,我是否应该使用 varchar,如下面的 varchara 4000
(2000 个字符加上可能的 HTML 标记的 2000 个字符。但 HTML 标记可能超过 2000 个字符,具体取决于用户)?或者我应该使用文本或 lob 数据类型(可以存储无限的数据)?
考虑到会有数亿条记录以及高数据库保存和查询事务,实用且平衡的设计(性能、存储等)是什么?
非常感谢!
最佳答案
您应该使用 varchar(MAX)
/nvarchar(MAX)
,它是 text
/ntext< 的后继者
数据类型,因为它允许任意长度和 does not produce additional overhead 。通过限制 (n)varchar 的大小并不能节省空间。
就我个人而言,我更推荐使用 nvarchar 而不是 varchar。他们占用a bit more space ,但是一旦您的用户开始输入非英文字符,您就可以省去很多麻烦。
请注意,您无法在 (n)varchar(MAX) 字段上创建索引。
关于sql-server - 所见即所得字段的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303769/