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

我刚刚读到,建议将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上使用varchar(MAX)vs TEXT 的全部内容, 来源链接: utcz.com/qa/401854.html

回到顶部