use*_*116 7 sql-server indexing
我有一个包含多个列的数据库表; 其中大多数是VARCHAR(x)类型列,其中一些列有一个索引,以便我可以快速搜索其中的数据.
但是,其中一列是一TEXT列,因为它包含非常大量的数据(23 kb的普通ascii文本等).我希望能够在该列(... WHERE col1 LIKE '%search string%'...)中进行搜索,但目前正在执行查询.我知道由于这个列搜索,查询很慢,因为当我从WHERE子句中删除该条件时,查询就会立即完成(我会考虑).
我无法在此列上添加索引,因为该选项在SQL Server Management Studio的索引构建器/向导中对该列显示为灰色.
我有什么选择,加快该列中的查询搜索?
谢谢你的时间...
更新
确定,所以我查看了全文搜索并完成了所有这些工作,现在我想运行查询.但是,当使用"包含"时,它只接受一个单词; 如果我需要一个确切的短语怎么办?... WHERE CONTAINS (col1, 'search phrase') ...抛出错误.
对不起,我是SQL Server的新手
更新2 对不起,刚想通了; 使用多个"contains"子句而不是一个包含多个单词的子句.实际上,这仍然没有得到我想要的(确切的短语)它只能确保短语中的所有单词都存在.
如果你的查询都是一样LIKE '%string%'(即你搜索字符串内一个TEXT字段),那么你就需要一个FULLTEXT索引。
如果您在字段 ( )的开头搜索子字符串LIKE 'string%'并使用SQL Server 2005或更高,那么您可以将您的转换TEXT为 a VARCHAR(MAX),创建一个计算列并索引该列。
有关性能详细信息,请参阅我博客中的这篇文章:
| 归档时间: |
|
| 查看次数: |
19322 次 |
| 最近记录: |