我刚刚读到,VARCHAR(MAX)
数据类型(可以存储接近 2GB 的 char 数据)是 SQL Server 2005 中推荐的 TEXT
数据类型替代品和下一个 SQL SERVER 版本。
如果我想在列中搜索任何字符串,哪种操作更快?
对
VARCHAR(MAX)
列使用LIKE
子句?WHERE COL1 LIKE '%搜索字符串%'
使用
TEXT
列并在此列上放置全文索引/目录,然后使用搜索>CONTAINS
子句?WHERE CONTAINS (Col1, 'MyToken')
最佳答案
VARCHAR(MAX)
类型是 TEXT
的替代品。基本区别在于,TEXT
类型始终将数据存储在 blob 中,而 VARCHAR(MAX)
类型将尝试将数据直接存储在行中,除非超过8k 限制,此时它将其存储在一个 blob 中。
两种数据类型之间 LIKE 语句的使用是相同的。 VARCHAR(MAX)
为您提供的附加功能是,它还可以像任何其他 VARCHAR 一样与
栏即可。但是,如果您确实有大量数据,那么使用这些方法将会遇到巨大的性能问题。=
和 GROUP BY
一起使用
关于是否应该使用LIKE
进行搜索,或者是否应该使用全文索引和CONTAINS
。无论 VARCHAR(MAX)
还是 TEXT
,这个问题都是一样的。
如果您要搜索大量文本并且性能至关重要,那么您应该使用全文索引。
LIKE
实现起来比较简单,通常适用于少量数据,但由于无法使用索引,因此在处理大数据时性能极差。
关于sql-server - 在 SQL Server 上使用 varchar(MAX) 与 TEXT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834788/