【问题标题】:what advantage does TEXT have over varchar when required length <8000?当所需长度<8000 时,TEXT 比 varchar 有什么优势?
【发布时间】:2011-10-27 04:05:34
【问题描述】:

SQL Server Text type vs. varchar data type:

根据经验,如果您需要文本值超过 200 字符 AND 不要在此列上使用连接,使用 TEXT。

否则使用 VARCHAR。

假设我现在的数据是 4000 个字符,并且我不在此列上使用连接。通过该引用,与使用 varchar(4000) 相比,使用 TEXT/varchar(max) 更有利。

为什么会这样? (在这种情况下,TEXT/varchar(max) 比普通的 varchar 有什么优势?)

【问题讨论】:

  • 这有关系吗?这些天来,我会说你应该使用 VARCHAR(MAX) 而不是 TEXT 。您是在谈论特定版本的 SQL Server 吗?
  • @Matt Gibson 嘿,我已经添加了 varchar(max) 部分。我不是在谈论特定版本,但如果需要,2008 年

标签: sql-server database text varchar


【解决方案1】:

TEXT 已弃用,请改用 nvarchar(max)varchar(max)varbinary(max)http://msdn.microsoft.com/en-us/library/ms187993.aspx

【讨论】:

  • 顺便说一句,我将 TEXT/varchar(max) 与 normal varchar 进行比较,而不是 TEXT 与 varchar(max)
  • 简短的回答是:视情况而定!
  • 请更具体。这取决于什么?
【解决方案2】:

我不同意 200 的说法,因为它没有被解释,除非它与已弃用的 "text in row" option 相关

  • 如果您的数据是 4000 个字符,则使用 char(4000)。它是固定长度的
  • 不推荐使用文本
  • BLOB 类型速度较慢

【讨论】:

  • 我认为他的意思不是“我的数据总是正好 4000 个字符”,而是他的意思是最多可以有 4000 个字符。如果是这样,我不建议使用 char(x)。此外,如果“BLOB 类型”的意思是“图像”,那么它也已被弃用。
  • @Nux:BLOB 类型也包括最大类型
【解决方案3】:

在旧版本的 SQL(2000 和更早版本?)中,最大行长度为 8 KB(或 8060 字节)。如果您将 varchar 用于大量长文本列,它们将包含在此长度中,而任何文本列都不会,因此您可以在一行中保留更多文本。

此问题已在较新版本的 SQL 中得到解决。

This MSDN page 包含以下语句:

SQL Server 2005 支持行溢出存储,它启用了变量 长度列被推离行。只有一个 24 字节的根存储在 可变长度列的主记录被推出行;因为 其中,有效行限制高于以前的版本 SQL Server 的。有关详细信息,请参阅“行溢出数据 SQL Server 2005 联机丛书中的“超过 8 KB”主题。

【讨论】:

  • @Mitch,是的! - 称之为星期一早上的雾
猜你喜欢
  • 2011-01-01
  • 2018-08-06
  • 2014-10-04
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多