sql-server - SQL服务器; TEXT 列上的索引

标签 sql-server indexing

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

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

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

我可以选择哪些选项来加快该列中的查询搜索速度?

感谢您的宝贵时间...

更新
好的,所以我研究了全文搜索并做了所有这些事情,现在我想运行查询。然而,当使用“contains”时,它只接受一个单词;如果我需要一个准确的短语怎么办? ... WHERE CONTAINS (col1, '搜索短语') ... 抛出错误。

抱歉,我是 SQL Server 新手

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

最佳答案

搜索文本字段总是很慢。给予Full Text Search尝试一下,看看这是否更适合您。

关于sql-server - SQL服务器; TEXT 列上的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830241/

相关文章:

sql - 只更新单个表的事务是否总是隔离的?

sql - 查询从 SQL Server 中的表中检索前两行

SQL Server 2005 - 删除表触发器?

mysql - 为mysql动态列添加索引

python - 如何从多值字典中的任何指定值中获取键

sql - 每个外键的索引?

c# - 如何更新 unpivot 查询中的列我的查询附加 SQL Server?

database - Postgres 不在 UUID 的 "IN"子句中使用索引

sql - LINQ 查询 RavenDB

python - numpy数组切片,从每个第三维获取一个