sql - 我需要一个单独的表来描述 nvarchar(max)

标签 sql database database-design data-modeling

在我之前的一家公司中,我们曾经有一个单独的表,我们在文本类型的列中存储长描述。我认为这样做是因为文本类型的限制。

我现在正在为我正在处理的现有应用程序设计表格,我想到了这个问题。我对将我的项目的详细描述存储在 varchar(max) 列的同一项目表中产生共鸣。我知道我无法为该列编制索引,但没关系,因为我不会对这些列进行搜索。

到目前为止,我看不出有任何理由将此列分隔到另一个表中。

如果我遗漏了某些内容或者将我的描述存储在 varchar(max) 的同一个表中是一个好方法,您能给我输入吗?谢谢!

最佳答案

将字段保留在它们所属的表中。自 SQL Server 2005 以来,该引擎在大型数据类型甚至可变长度短数据类型方面变得更加智能。旧的 TEXT、NTEXT 和 IMAGE 类型已弃用。具有 MAX 长度的新类型是它们的替代品。在 SQL 2005 中,每个分区都有 3 种类型的底层分配单元:一种用于行,一种用于 LOB,一种用于行溢出。 MAX 类型存储在 LOB 分配单元中,因此实际上引擎正在为您管理一个单独的表来存储大型对象。行溢出单元用于更新后不再适合页面的行内可变长度数据,因此它“溢出”到一个单独的单元中。

参见 Table and Index Organization .

关于sql - 我需要一个单独的表来描述 nvarchar(max),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1412040/

相关文章:

MySQL:重复数据或更多查询

java.sql.SQLException : Access denied for user 'root' @'192.168.3.33' (using password: YES) on jelastic

php - mysql 查询 - 3 个表 - 无法正确执行

mysql - 组合两个 mysql Select 语句,以便我可以对结果数据进行排序

python - Google App Engine - 跟踪使用了哪些索引

arrays - 用于存储不同大小数据集的数据库表设计

database - 配方数据库设计

sql - 在现有表中添加具有主键的列

mysql - 查找具有相同特征的元素

mysql - 如何使用两个不同的列 mySQL 从查询而不是其他查询中获取数据?