在 SQL Server 2008 中选择正确的字段数据类型

Edd*_*Paz 1 database-design sql-server-2008-r2

我收到了创建一个新表的请求,该表将为客户存储某些信息。除了一个字段外,表的定义有些无关紧要。该字段将存储从终端屏幕检索到的 ANSI 字符。

一开始会有大约 5000 万行,最初,我们估计该字段需要 <= 7,500 个字符,所以我选择使用VARCHAR(8000)数据类型。经过更多分析,我们确定 3000 万行中大约 90% 将 <= 8000,但另外 10% 将 <= 15,000。

VARCHAR由于 8,000 的限制,我显然不能使用它,所以我认为我唯一的选择是text数据类型。我担心“文本”的开销,它最终可能会被删除。我现在正在研究VARCHAR(max),但我从未在生产环境中使用过它。

我应该使用varchar(max)text还是寻找一种方法来压缩那 10% 的数据并将其存储在varchar(8000).

Mik*_*son 6

你应该使用varchar(max). 该text数据类型“将在Microsoft SQL Server的未来版本中删除。”

与在 SQL Server使用 varchar(MAX) 与 TEXT 的SO 相关

基本区别在于 TEXT 类型将始终将数据存储在 blob 中,而 VARCHAR(MAX) 类型将尝试将数据直接存储在行中,除非它超过 8k 限制,此时它将其存储在 blob 中。