sql-server - 所见即所得字段的数据库设计

标签 sql-server database wysiwyg

我有一个数据库字段,需要存储 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/

相关文章:

mysql - Phalcon 交易无法正常工作

sql - 从多列中选择最小值的最佳方法是什么?

mysql - 如何编写 SQL 查询以避免重复?

sql-server - SQL Server 上的高效 ISNUMERIC() 替换?

sql - 获取声明的列创建数据类型

.net - 存储很少更改但经常访问的数据,这是解决方案吗?

mysql - Wordpress 可以与现有数据库表共存吗?

javascript - 任何编辑 html "As It Is"的富文本编辑器?

javascript - Drupal 中的哪个所见即所得编辑器能让我最大程度地控制标记?

reactjs - 无法将 Lexical 解析为 HTML