小编典典

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

all

我刚刚读到该VARCHAR(MAX)数据类型(可以存储接近 2GB 的 char 数据)是TEXTSQL Server 2005 和 Next
SQL SERVER 版本中数据类型的推荐替代品。

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

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

WHERE COL1 LIKE '%search string%'

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

WHERE CONTAINS (Col1, 'MyToken')


阅读 72

收藏
2022-06-25

共1个答案

小编典典

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

在两种数据类型之间使用 LIKE 语句是相同的。为您提供的附加功能VARCHAR(MAX)是它也可以与=任何GROUP BY其他VARCHAR列一起使用。但是,如果您确实有大量数据,则使用这些方法将遇到巨大的性能问题。

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

如果您正在搜索大量文本并且性能是关键,那么您应该使用 全文索引

LIKE实现起来更简单,通常适用于少量数据,但由于无法使用索引,因此在处理大数据时性能极差。

2022-06-25