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)
.
你应该使用varchar(max)
. 该text
数据类型“将在Microsoft SQL Server的未来版本中删除。”
与在 SQL Server上使用 varchar(MAX) 与 TEXT 的SO 相关
基本区别在于 TEXT 类型将始终将数据存储在 blob 中,而 VARCHAR(MAX) 类型将尝试将数据直接存储在行中,除非它超过 8k 限制,此时它将其存储在 blob 中。