当前位置: 首页 > 面试题库 >

在SQL Server上使用varchar(MAX)vs TEXT

呼延承平
2023-03-14
问题内容

我刚刚读到,建议将VARCHAR(MAX)数据类型(可以存储接近2GB的char数据)替换为TEXTSQL Server 2005Next SQL SERVER版本中的数据类型。

如果我想在列内搜索任何字符串,哪个操作更快?

  1. LIKE对VARCHAR(MAX)列使用子句?

WHERE COL1 LIKE '%search string%'

  1. 使用该TEXT列并在此列上放置全文索引/目录,然后使用该CONTAINS子句进行搜索?

WHERE CONTAINS (Col1, 'MyToken')


问题答案:

VARCHAR(MAX)类型是的替代TEXT。基本区别在于,TEXT类型将始终将数据存储在Blob中,而该VARCHAR(MAX)类型将尝试将数据直接存储在行中,除非它超过8k限制,然后将其存储在Blob中。

两种数据类型之间使用LIKE语句相同。附加的功能VARCHAR(MAX)给你的是,它也可以被用来=GROUP BY其他任何VARCHAR列都可以。但是,如果您确实有大量数据,那么使用这些方法会遇到巨大的性能问题。

关于是否应该使用LIKE搜索,或者是否应该使用全文索引CONTAINS。不论VARCHAR(MAX)还是,这个问题都是一样的TEXT

如果要搜索大量文本,而性能是关键,则应使用全文索引。

LIKE 易于实现,并且通常适用于少量数据,但是由于无法使用索引,因此在处理大数据时性能极差。



 类似资料:
  • 问题内容: 是否可以将SQL Server 2008数据库中的列类型从更改为,而不必删除表并重新创建? 每当我尝试使用SQL Server Management Studio进行操作时,SQL Server Management Studio都会向我抛出一个错误-但是让我头疼的是,很高兴知道我是否可以更改类型而不必删除和创建。 谢谢 问题答案: 您应该能够使用TSQL做到这一点。 就像是

  • 问题内容: 在为应用程序构建架构时遇到一个问题。 何时使用和。我的意思是应该使用它的确切用例。我也曾在网上冲浪,但我能够得到确切的答案。 任何人都可以提出一些确切的用例。 问题答案: 这是针对Microsoft SQL Server的 : 是 Unicode- 每个字符2个字节,因此最大。10亿个字符;可以处理东亚语,阿拉伯语,希伯来语,西里尔字母等字符。 就是 非Unicode -每个字符1个字

  • 我需要使用convert二进制函数更新一列,但它抛出了一个错误。 这是我的疑问: 这就是错误: 参数数据类型varbinary(max)对于convert函数的参数3无效。 我是SQL的初学者——我错过了什么?

  • 问题内容: 我正在使用该程序包从数据库查询文本列。该数据库基于Microsoft SQL Server 2008 R2构建。SQL中列的数据类型为。 但是,当我运行时: 在SQL中,我期望(对于第一行): 但是,当我这样做时: 它返回: 255 。 所以我的问题是,是什么导致了这种截断,我该如何避免呢?谢谢!! 问题答案: 好的,看来我已经找到了解决方法。经过更多Google搜寻后,我发现: SQ

  • 问题内容: 我有一个使用ODBC连接连接到MSSQL数据库的Python程序。我正在使用的Python库是pypyodbc。 这是我的设置: Windows 8.1 x64 SQL Server 2014 x64 Python 2.7.9150 PyPyODBC 1.3.3 ODBC驱动程序:SQL Server本机客户端11.0 我遇到的问题是,当我查询带有varchar(max)列的表时,内容

  • 问题内容: MySQL中的varchar(max)等价于什么? 问题答案: varchar的最大长度取决于MySQL中的最大行大小,即64KB(不包括BLOB): 但是,请注意,如果使用多字节字符集,则限制会更低: 这里有些例子: 最大行大小为65535,但是varchar还包括一个或两个字节来编码给定字符串的长度。因此,即使它是表中的唯一列,您实际上也无法声明最大行大小的varchar。 但是,