Sql server sqlserver;文本列上的索引

Sql server sqlserver;文本列上的索引,sql-server,indexing,Sql Server,Indexing,我有一个包含多个列的数据库表;大多数是VARCHAR(x)type列,其中一些列上有索引,以便我可以快速搜索其中的数据 但是,其中一列是TEXT列,因为它包含大量数据(23KB的纯ascii文本等)。我希望能够在该列中搜索(…其中col1类似于“%search string%”…),但目前执行查询需要花费很长时间。我知道由于此列搜索,查询速度很慢,因为当我从WHERE子句中删除该条件时,查询会立即完成(我会考虑) 我无法在此列上添加索引,因为在SQL Server Management Stud

我有一个包含多个列的数据库表;大多数是
VARCHAR(x)
type列,其中一些列上有索引,以便我可以快速搜索其中的数据

但是,其中一列是
TEXT
列,因为它包含大量数据(23KB的纯ascii文本等)。我希望能够在该列中搜索(…
其中col1类似于“%search string%”…
),但目前执行查询需要花费很长时间。我知道由于此列搜索,查询速度很慢,因为当我从
WHERE
子句中删除该条件时,查询会立即完成(我会考虑)

我无法在此列上添加索引,因为在SQL Server Management Studio的“索引生成器/向导”中,该列的该选项已灰显

为了加快该列中的查询搜索,我在这里有哪些选项

谢谢你的时间

更新
好的,我查看了全文搜索并做了所有这些工作,现在我想运行查询。但是,当使用“包含”时,它只接受一个单词;如果我需要一个确切的短语呢<代码>。。。其中包含(col1,'搜索短语')…抛出错误

对不起,我是SQL Server新手

更新2
对不起,我刚想出来;使用多个“包含”子句,而不是一个包含多个单词的子句。实际上,这仍然没有得到我想要的(确切的短语),它只确保短语中的所有单词都存在。

您应该考虑在列上使用全文索引。

搜索文本字段总是非常慢。请尝试一下,看看这是否更适合您。

如果您的查询类似于
类似于“%string%”
(即,您在
文本
字段中搜索字符串),则需要
全文
索引

如果在字段的开头搜索子字符串(
如'string%'
),并使用
SQL Server 2005
或更高版本,则可以将
文本
转换为
VARCHAR(MAX)
,创建计算列并为该列编制索引

有关性能详细信息,请参阅我博客中的这篇文章:


您可以在FTS中执行复杂的布尔查询;像

包含(yourcol、“我的第一个字符串”或“我的第二个字符串”和“我的第三个字符串”)

根据您的查询,ContainsTable或freetexttable可能会提供更好的结果


如果你是通过.Net连接的,你可能想看看,因为没有人说过(可能是因为这很明显),像“%string%”这样的
查询会绕过你现有的索引,所以它会运行得很慢。
因此-为什么需要使用全文索引。(这就是卡西诺所说的)


更正-我确信我学会了这一点,并且一直相信这一点-但经过一些调查(在开始时使用通配符)后,似乎还可以?我的旧正则表达式查询在喜欢的情况下运行得更好

我只是试了一下你的变体,但它不起作用;首先,它需要使用'and not',第二个添加第二个或多个单词不起作用,如果我使用'and'或'Y ERROSS you need a single'在查询中,语法结尾是Contains(*或colname','your data'和'some other data'),则链接不再起作用。如果可能,请修复!链接现在已修复