在SQL Server上使用varchar(MAX)vs TEXT
我刚刚读到,建议将VARCHAR(MAX)
数据类型(可以存储接近2GB的char数据)替换为TEXTSQL Server 2005
和Next SQL SERVER
版本中的数据类型。
如果我想在列内搜索任何字符串,哪个操作更快?
LIKE对VARCHAR(MAX)
列使用子句?
WHERE COL1 LIKE '%search string%'
- 使用该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